@siemens/element-ng 47.1.0-next.3 → 47.1.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.
@@ -0,0 +1,386 @@
1
+ import { NgTemplateOutlet, NgClass } from '@angular/common';
2
+ import * as i0 from '@angular/core';
3
+ import { input, booleanAttribute, output, viewChild, signal, Component, inject, NgModule } from '@angular/core';
4
+ import { SiHeaderDropdownComponent, SiHeaderDropdownTriggerDirective, SiHeaderDropdownItemsFactoryComponent, SI_HEADER_WITH_DROPDOWNS } from '@siemens/element-ng/header-dropdown';
5
+ import { SiLinkDirective } from '@siemens/element-ng/link';
6
+ import * as i1 from '@siemens/element-translate-ng/translate';
7
+ import { SiTranslateModule } from '@siemens/element-translate-ng/translate';
8
+ import { A11yModule } from '@angular/cdk/a11y';
9
+ import { SiApplicationHeaderComponent, SiHeaderCollapsibleActionsComponent, SiLaunchpadFactoryComponent, SiHeaderAccountItemComponent, SiHeaderNavigationItemComponent, SiHeaderBrandDirective, SiHeaderNavigationComponent, SiHeaderActionsDirective, SiHeaderLogoDirective } from '@siemens/element-ng/application-header';
10
+ import { defer } from 'rxjs';
11
+
12
+ /**
13
+ * Copyright Siemens 2016 - 2025.
14
+ * SPDX-License-Identifier: MIT
15
+ */
16
+ /** @deprecated Use the new `si-application-header` instead. */
17
+ class SiNavbarPrimaryComponent {
18
+ /**
19
+ * List of navbar items which should be displayed at the left (in LTR) side next to the
20
+ * banner.
21
+ *
22
+ * @defaultValue []
23
+ */
24
+ primaryItems = input([]);
25
+ /**
26
+ * List of account dropdown elements (defined by `title` and `link`).
27
+ *
28
+ * The menu item can have submenu items (supplying `items`: MenuItem[]).
29
+ * Submenu items can be divided into groups by separators. A separator is
30
+ * an item with only '-' set as `title`.
31
+ *
32
+ * Alternatively, you can can create a custom content by putting your html
33
+ * code between the <si-navbar-primary> tags. In this case you don't need this
34
+ * property (will be ignored if you set anyway).
35
+ */
36
+ accountItems = input();
37
+ /**
38
+ * Account settings name (`title`) and profile picture (`image` or `icon`)
39
+ */
40
+ account = input();
41
+ /**
42
+ * URL of the navbar brand.
43
+ */
44
+ logoUrl = input();
45
+ /**
46
+ * Title of the application.
47
+ */
48
+ appTitle = input();
49
+ /**
50
+ * Configurable home link that is used at the logo and app title.
51
+ * Use `undefined` to disable the link.
52
+ *
53
+ * @defaultValue
54
+ * ```
55
+ * { link: '/' }
56
+ * ```
57
+ */
58
+ home = input({ link: '/' });
59
+ /**
60
+ * title for the launchpad
61
+ *
62
+ * @defaultValue
63
+ * ```
64
+ * $localize`:@@SI_LAUNCHPAD.TITLE:Launchpad`
65
+ * ```
66
+ */
67
+ appSwitcherTitle = input($localize `:@@SI_LAUNCHPAD.TITLE:Launchpad`);
68
+ /**
69
+ * sub-title for the launchpad
70
+ *
71
+ * @defaultValue
72
+ * ```
73
+ * $localize`:@@SI_LAUNCHPAD.SUB_TITLE:Access all your apps`
74
+ * ```
75
+ */
76
+ appSwitcherSubTitle = input($localize `:@@SI_LAUNCHPAD.SUB_TITLE:Access all your apps`);
77
+ /**
78
+ * Title or translate key for the favorite apps section.
79
+ *
80
+ * @defaultValue
81
+ * ```
82
+ * $localize`:@@SI_LAUNCHPAD.FAVORITE_APPS:Favorite apps`
83
+ * ```
84
+ */
85
+ favoriteAppsTitle = input($localize `:@@SI_LAUNCHPAD.FAVORITE_APPS:Favorite apps`);
86
+ /**
87
+ * Title or translate key for the default apps section.
88
+ *
89
+ * @defaultValue
90
+ * ```
91
+ * $localize`:@@SI_LAUNCHPAD.DEFAULT_CATEGORY_TITLE:Apps`
92
+ * ```
93
+ */
94
+ defaultAppsTitle = input($localize `:@@SI_LAUNCHPAD.DEFAULT_CATEGORY_TITLE:Apps`);
95
+ /**
96
+ * Title or translate key for the show more apps button.
97
+ *
98
+ * @defaultValue
99
+ * ```
100
+ * $localize`:@@SI_LAUNCHPAD.SHOW_MORE:Show more`
101
+ * ```
102
+ */
103
+ showMoreAppsTitle = input($localize `:@@SI_LAUNCHPAD.SHOW_MORE:Show more`);
104
+ /**
105
+ * Title or translate key for the show less apps button.
106
+ *
107
+ * @defaultValue
108
+ * ```
109
+ * $localize`:@@SI_LAUNCHPAD.SHOW_LESS:Show less`
110
+ * ```
111
+ */
112
+ showLessAppsTitle = input($localize `:@@SI_LAUNCHPAD.SHOW_LESS:Show less`);
113
+ /**
114
+ * All app items shown in the launchpad. The launchpad will not be visible if the
115
+ * app items are undefined. The launchpad will be visible if the app items are an
116
+ * empty array.
117
+ */
118
+ appItems = input();
119
+ /**
120
+ * Like `appItems` but with the addition of categories. If this is set, `appItems` is ignored.
121
+ */
122
+ appCategoryItems = input();
123
+ /**
124
+ * Allow the user to favorite apps which will then be displayed at the top.
125
+ *
126
+ * @defaultValue false
127
+ */
128
+ appItemsFavorites = input(false, { transform: booleanAttribute });
129
+ /**
130
+ * "all apps" link in the launchpad
131
+ */
132
+ allAppsLink = input();
133
+ /**
134
+ * Specifies whether the component should automatically be focused as soon as it is loaded.
135
+ *
136
+ * @defaultValue false
137
+ */
138
+ focusOnLoad = input(false, { transform: booleanAttribute });
139
+ /**
140
+ * Marks the navbar as primary navigation element. Needed for a11y (screen reader).
141
+ * Only one element should be primary. If multiple navbars are used, it's up to the
142
+ * user of the components to label them in the correct order.
143
+ *
144
+ * @defaultValue 'Primary'
145
+ */
146
+ navAriaLabel = input('Primary');
147
+ /**
148
+ * Text to close the launchpad. Needed for a11y.
149
+ *
150
+ * @defaultValue
151
+ * ```
152
+ * $localize`:@@SI_LAUNCHPAD.CLOSE:Close launchpad`
153
+ * ```
154
+ */
155
+ closeAppSwitcherText = input($localize `:@@SI_LAUNCHPAD.CLOSE:Close launchpad`);
156
+ /**
157
+ * Text for the launchpad icon. Needed for a11y.
158
+ *
159
+ * @defaultValue
160
+ * ```
161
+ * $localize`:@@SI_NAVBAR.OPEN_LAUNCHPAD:Open launchpad`
162
+ * ```
163
+ */
164
+ openAppSwitcherText = input($localize `:@@SI_NAVBAR.OPEN_LAUNCHPAD:Open launchpad`);
165
+ /**
166
+ * Text or translate key for the toggle navigation icon. Needed for a11y.
167
+ *
168
+ * @defaultValue
169
+ * ```
170
+ * $localize`:@@SI_NAVBAR.TOGGLE_NAVIGATION:Toggle navigation`
171
+ * ```
172
+ */
173
+ toggleNavigationText = input($localize `:@@SI_NAVBAR.TOGGLE_NAVIGATION:Toggle navigation`);
174
+ /**
175
+ * Aria label for the main menu landmark
176
+ *
177
+ * @defaultValue 'Header main'
178
+ */
179
+ ariaLabelMainMenu = input('Header main');
180
+ /**
181
+ * Aria label for the secondary menu landmark
182
+ *
183
+ * @defaultValue 'Header secondary'
184
+ */
185
+ ariaLabelSecondaryMenu = input('Header secondary');
186
+ appItemFavoriteChanged = output();
187
+ /** @internal */
188
+ header = viewChild.required(SiApplicationHeaderComponent);
189
+ /** @internal */
190
+ collapsibleActions = viewChild(SiHeaderCollapsibleActionsComponent);
191
+ /** @internal */
192
+ navItemCount = signal(0);
193
+ newAppItems;
194
+ active;
195
+ /** @internal */
196
+ // defer is required as header is not available at the time of creation.`
197
+ inlineDropdown = defer(() => this.header().inlineDropdown);
198
+ /** @internal */
199
+ onDropdownItemTriggered() {
200
+ this.header().onDropdownItemTriggered();
201
+ }
202
+ /** @internal */
203
+ ngOnChanges(changes) {
204
+ if (changes.appItems || changes.appCategoryItems) {
205
+ const appItems = this.appItems();
206
+ const appCategoryItems = this.appCategoryItems();
207
+ if (appCategoryItems) {
208
+ this.newAppItems = appCategoryItems.map(category => ({
209
+ // Violation by intention.
210
+ // Empty strings should also be replaced by the default title.
211
+ // We rely on this in our examples, so projects might as well.
212
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
213
+ name: category.category || this.defaultAppsTitle(),
214
+ apps: this.convertApps(category.items)
215
+ }));
216
+ const allAppsLink = this.allAppsLink();
217
+ if (allAppsLink && this.newAppItems.length) {
218
+ const lastCategory = this.newAppItems.at(-1);
219
+ lastCategory.apps.push({
220
+ name: allAppsLink.title,
221
+ iconClass: allAppsLink.icon ?? 'element-plus',
222
+ href: allAppsLink.href,
223
+ target: allAppsLink.target,
224
+ _noFavorite: true // this should not show up in public API, but we need it for now.
225
+ });
226
+ }
227
+ }
228
+ else if (appItems) {
229
+ this.newAppItems = this.convertApps(appItems);
230
+ const allAppsLink = this.allAppsLink();
231
+ if (allAppsLink) {
232
+ this.newAppItems.push({
233
+ name: allAppsLink.title,
234
+ iconClass: allAppsLink.icon ?? 'element-plus',
235
+ href: allAppsLink.href,
236
+ target: allAppsLink.target,
237
+ _noFavorite: true // this should not show up in public API, but we need it for now.
238
+ });
239
+ }
240
+ }
241
+ }
242
+ }
243
+ convertApps(apps) {
244
+ return apps.map(app => ({
245
+ name: app.title,
246
+ href: app.href,
247
+ external: app.isExternal,
248
+ active: app.isActive,
249
+ target: app.target,
250
+ iconClass: app.icon,
251
+ favorite: app.isFavorite,
252
+ _src: app // this should not show up in public API, but we need it for now.
253
+ }));
254
+ }
255
+ onFavoriteChange({ app, favorite }) {
256
+ this.appItemFavoriteChanged.emit([app._src, favorite]);
257
+ }
258
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarPrimaryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
259
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiNavbarPrimaryComponent, isStandalone: true, selector: "si-navbar-primary", inputs: { primaryItems: { classPropertyName: "primaryItems", publicName: "primaryItems", isSignal: true, isRequired: false, transformFunction: null }, accountItems: { classPropertyName: "accountItems", publicName: "accountItems", isSignal: true, isRequired: false, transformFunction: null }, account: { classPropertyName: "account", publicName: "account", isSignal: true, isRequired: false, transformFunction: null }, logoUrl: { classPropertyName: "logoUrl", publicName: "logoUrl", isSignal: true, isRequired: false, transformFunction: null }, appTitle: { classPropertyName: "appTitle", publicName: "appTitle", isSignal: true, isRequired: false, transformFunction: null }, home: { classPropertyName: "home", publicName: "home", isSignal: true, isRequired: false, transformFunction: null }, appSwitcherTitle: { classPropertyName: "appSwitcherTitle", publicName: "appSwitcherTitle", isSignal: true, isRequired: false, transformFunction: null }, appSwitcherSubTitle: { classPropertyName: "appSwitcherSubTitle", publicName: "appSwitcherSubTitle", isSignal: true, isRequired: false, transformFunction: null }, favoriteAppsTitle: { classPropertyName: "favoriteAppsTitle", publicName: "favoriteAppsTitle", isSignal: true, isRequired: false, transformFunction: null }, defaultAppsTitle: { classPropertyName: "defaultAppsTitle", publicName: "defaultAppsTitle", isSignal: true, isRequired: false, transformFunction: null }, showMoreAppsTitle: { classPropertyName: "showMoreAppsTitle", publicName: "showMoreAppsTitle", isSignal: true, isRequired: false, transformFunction: null }, showLessAppsTitle: { classPropertyName: "showLessAppsTitle", publicName: "showLessAppsTitle", isSignal: true, isRequired: false, transformFunction: null }, appItems: { classPropertyName: "appItems", publicName: "appItems", isSignal: true, isRequired: false, transformFunction: null }, appCategoryItems: { classPropertyName: "appCategoryItems", publicName: "appCategoryItems", isSignal: true, isRequired: false, transformFunction: null }, appItemsFavorites: { classPropertyName: "appItemsFavorites", publicName: "appItemsFavorites", isSignal: true, isRequired: false, transformFunction: null }, allAppsLink: { classPropertyName: "allAppsLink", publicName: "allAppsLink", isSignal: true, isRequired: false, transformFunction: null }, focusOnLoad: { classPropertyName: "focusOnLoad", publicName: "focusOnLoad", isSignal: true, isRequired: false, transformFunction: null }, navAriaLabel: { classPropertyName: "navAriaLabel", publicName: "navAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, closeAppSwitcherText: { classPropertyName: "closeAppSwitcherText", publicName: "closeAppSwitcherText", isSignal: true, isRequired: false, transformFunction: null }, openAppSwitcherText: { classPropertyName: "openAppSwitcherText", publicName: "openAppSwitcherText", isSignal: true, isRequired: false, transformFunction: null }, toggleNavigationText: { classPropertyName: "toggleNavigationText", publicName: "toggleNavigationText", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelMainMenu: { classPropertyName: "ariaLabelMainMenu", publicName: "ariaLabelMainMenu", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelSecondaryMenu: { classPropertyName: "ariaLabelSecondaryMenu", publicName: "ariaLabelSecondaryMenu", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { appItemFavoriteChanged: "appItemFavoriteChanged" }, providers: [{ provide: SI_HEADER_WITH_DROPDOWNS, useExisting: SiNavbarPrimaryComponent }], viewQueries: [{ propertyName: "header", first: true, predicate: SiApplicationHeaderComponent, descendants: true, isSignal: true }, { propertyName: "collapsibleActions", first: true, predicate: SiHeaderCollapsibleActionsComponent, descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<si-application-header [launchpad]=\"newAppItems ? launchpad : undefined\">\n <si-header-brand>\n @if (logoUrl()) {\n <a class=\"header-logo header-custom-logo px-6 focus-inside\" [siLink]=\"home()\">\n <img alt=\"Siemens logo\" [src]=\"logoUrl()\" />\n </a>\n } @else {\n <a siHeaderLogo class=\"d-none d-md-flex\" [siLink]=\"home()\"></a>\n }\n @if (appTitle()) {\n <span class=\"application-name\">{{ appTitle() }}</span>\n }\n </si-header-brand>\n\n @if (primaryItems().length) {\n <si-header-navigation [attr.aria-label]=\"ariaLabelMainMenu()\">\n @for (item of primaryItems(); track $index) {\n @if (item.items) {\n <button\n type=\"button\"\n si-header-navigation-item\n [siHeaderDropdownTriggerFor]=\"dropdown\"\n [class.active]=\"active === item\"\n >\n {{ item.title | translate }}\n <ng-template #dropdown>\n <si-header-dropdown>\n <si-header-dropdown-items-factory\n [items]=\"item.items\"\n (activeChange)=\"$event ? (active = item) : null\"\n />\n </si-header-dropdown>\n </ng-template>\n </button>\n } @else {\n <a\n si-header-navigation-item\n activeClass=\"active\"\n [siLink]=\"item\"\n (activeChange)=\"$event ? (active = item) : null\"\n >\n {{ item.title | translate }}\n </a>\n }\n }\n </si-header-navigation>\n }\n @if (navItemCount() || account()) {\n <si-header-actions [attr.aria-label]=\"ariaLabelSecondaryMenu()\">\n @if (navItemCount()) {\n @if (navItemCount() === 1) {\n <ng-container *ngTemplateOutlet=\"actions\" />\n } @else {\n <si-header-collapsible-actions>\n <ng-container *ngTemplateOutlet=\"actions\" />\n </si-header-collapsible-actions>\n }\n }\n @if (account()) {\n <!--eslint-disable @angular-eslint/template/elements-content -->\n <button\n si-header-account-item\n type=\"button\"\n [name]=\"account()!.title\"\n [initials]=\"account()!.initials\"\n [imageUrl]=\"account()!.image\"\n [siHeaderDropdownTriggerFor]=\"accountDropdown\"\n ></button>\n <!--eslint-enable @angular-eslint/template/elements-content -->\n\n <ng-template #accountDropdown>\n <si-header-dropdown>\n <div class=\"d-block userinfo mx-5 mb-4\">\n <div class=\"si-title-2 text-truncate\">{{ account()!.title }}</div>\n @if (account()!.email) {\n <div class=\"email\">{{ account()!.email }}</div>\n }\n <div class=\"d-flex align-items-center text-secondary mt-2\">\n @if (account()!.company) {\n <span class=\"label me-4\">{{ account()!.company | translate }}</span>\n }\n @if (account()!.role) {\n <span class=\"ms-0 badge bg-default\">\n {{ account()!.role | translate }}\n </span>\n }\n </div>\n </div>\n @if (accountItems()?.length) {\n <div class=\"d-block dropdown-divider\" role=\"separator\"></div>\n <si-header-dropdown-items-factory [items]=\"accountItems()!\" />\n }\n @if (account()!.customContent) {\n <div class=\"d-block dropdown-divider\" role=\"separator\"></div>\n <ng-content />\n }\n </si-header-dropdown>\n </ng-template>\n }\n </si-header-actions>\n } @else {\n <!-- Seems like @if makes ng-content believe that there is always a header-actions section. So we have to add it here. -->\n <si-header-actions />\n }\n</si-application-header>\n\n<ng-template #launchpad>\n <si-launchpad-factory\n [showLessAppsText]=\"showLessAppsTitle()\"\n [showMoreAppsText]=\"showMoreAppsTitle()\"\n [closeText]=\"closeAppSwitcherText()\"\n [titleText]=\"appSwitcherTitle()\"\n [subtitleText]=\"appSwitcherSubTitle()\"\n [enableFavorites]=\"appItemsFavorites()\"\n [favoriteAppsText]=\"favoriteAppsTitle()\"\n [apps]=\"newAppItems!\"\n (favoriteChange)=\"onFavoriteChange($event)\"\n />\n</ng-template>\n<ng-template #actions>\n <ng-content select=\"si-navbar-item[quickAction], element-navbar-item[quickAction='true']\" />\n</ng-template>\n", styles: [".header-custom-logo{content:initial;inline-size:auto}\n"], dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: SiLinkDirective, selector: "[siLink]", inputs: ["siLink", "siLinkDefaultTarget", "actionParam", "activeClass", "exactMatch", "ariaCurrent"], outputs: ["activeChange"], exportAs: ["siLink"] }, { kind: "ngmodule", type: SiTranslateModule }, { kind: "pipe", type: i1.SiTranslatePipe, name: "translate" }, { kind: "component", type: SiApplicationHeaderComponent, selector: "si-application-header", inputs: ["expandBreakpoint", "launchpad", "launchpadLabel"] }, { kind: "component", type: SiLaunchpadFactoryComponent, selector: "si-launchpad-factory", inputs: ["closeText", "titleText", "subtitleText", "apps", "enableFavorites", "favoriteAppsText", "showMoreAppsText", "showLessAppsText"], outputs: ["favoriteChange"] }, { kind: "component", type: SiHeaderAccountItemComponent, selector: "button[si-header-account-item]", inputs: ["name", "initials", "imageUrl"] }, { kind: "component", type: SiHeaderDropdownComponent, selector: "si-header-dropdown" }, { kind: "directive", type: SiHeaderDropdownTriggerDirective, selector: "[siHeaderDropdownTriggerFor]", inputs: ["siHeaderDropdownTriggerFor", "dropdownData"], outputs: ["openChange"], exportAs: ["siHeaderDropdownTrigger"] }, { kind: "component", type: SiHeaderDropdownItemsFactoryComponent, selector: "si-header-dropdown-items-factory", inputs: ["items"], outputs: ["activeChange"] }, { kind: "component", type: SiHeaderNavigationItemComponent, selector: "button[si-header-navigation-item], a[si-header-navigation-item]" }, { kind: "directive", type: SiHeaderBrandDirective, selector: "si-header-brand" }, { kind: "component", type: SiHeaderNavigationComponent, selector: "si-header-navigation" }, { kind: "directive", type: SiHeaderActionsDirective, selector: "si-header-actions" }, { kind: "component", type: SiHeaderCollapsibleActionsComponent, selector: "si-header-collapsible-actions", inputs: ["mobileToggleLabel"] }, { kind: "directive", type: SiHeaderLogoDirective, selector: "si-header-logo, [siHeaderLogo]" }] });
260
+ }
261
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarPrimaryComponent, decorators: [{
262
+ type: Component,
263
+ args: [{ selector: 'si-navbar-primary', imports: [
264
+ A11yModule,
265
+ NgTemplateOutlet,
266
+ SiLinkDirective,
267
+ SiTranslateModule,
268
+ SiApplicationHeaderComponent,
269
+ SiLaunchpadFactoryComponent,
270
+ SiHeaderAccountItemComponent,
271
+ SiHeaderDropdownComponent,
272
+ SiHeaderDropdownTriggerDirective,
273
+ SiHeaderDropdownItemsFactoryComponent,
274
+ SiHeaderNavigationItemComponent,
275
+ SiHeaderBrandDirective,
276
+ SiHeaderNavigationComponent,
277
+ SiHeaderActionsDirective,
278
+ SiHeaderCollapsibleActionsComponent,
279
+ SiHeaderLogoDirective
280
+ ], providers: [{ provide: SI_HEADER_WITH_DROPDOWNS, useExisting: SiNavbarPrimaryComponent }], template: "<si-application-header [launchpad]=\"newAppItems ? launchpad : undefined\">\n <si-header-brand>\n @if (logoUrl()) {\n <a class=\"header-logo header-custom-logo px-6 focus-inside\" [siLink]=\"home()\">\n <img alt=\"Siemens logo\" [src]=\"logoUrl()\" />\n </a>\n } @else {\n <a siHeaderLogo class=\"d-none d-md-flex\" [siLink]=\"home()\"></a>\n }\n @if (appTitle()) {\n <span class=\"application-name\">{{ appTitle() }}</span>\n }\n </si-header-brand>\n\n @if (primaryItems().length) {\n <si-header-navigation [attr.aria-label]=\"ariaLabelMainMenu()\">\n @for (item of primaryItems(); track $index) {\n @if (item.items) {\n <button\n type=\"button\"\n si-header-navigation-item\n [siHeaderDropdownTriggerFor]=\"dropdown\"\n [class.active]=\"active === item\"\n >\n {{ item.title | translate }}\n <ng-template #dropdown>\n <si-header-dropdown>\n <si-header-dropdown-items-factory\n [items]=\"item.items\"\n (activeChange)=\"$event ? (active = item) : null\"\n />\n </si-header-dropdown>\n </ng-template>\n </button>\n } @else {\n <a\n si-header-navigation-item\n activeClass=\"active\"\n [siLink]=\"item\"\n (activeChange)=\"$event ? (active = item) : null\"\n >\n {{ item.title | translate }}\n </a>\n }\n }\n </si-header-navigation>\n }\n @if (navItemCount() || account()) {\n <si-header-actions [attr.aria-label]=\"ariaLabelSecondaryMenu()\">\n @if (navItemCount()) {\n @if (navItemCount() === 1) {\n <ng-container *ngTemplateOutlet=\"actions\" />\n } @else {\n <si-header-collapsible-actions>\n <ng-container *ngTemplateOutlet=\"actions\" />\n </si-header-collapsible-actions>\n }\n }\n @if (account()) {\n <!--eslint-disable @angular-eslint/template/elements-content -->\n <button\n si-header-account-item\n type=\"button\"\n [name]=\"account()!.title\"\n [initials]=\"account()!.initials\"\n [imageUrl]=\"account()!.image\"\n [siHeaderDropdownTriggerFor]=\"accountDropdown\"\n ></button>\n <!--eslint-enable @angular-eslint/template/elements-content -->\n\n <ng-template #accountDropdown>\n <si-header-dropdown>\n <div class=\"d-block userinfo mx-5 mb-4\">\n <div class=\"si-title-2 text-truncate\">{{ account()!.title }}</div>\n @if (account()!.email) {\n <div class=\"email\">{{ account()!.email }}</div>\n }\n <div class=\"d-flex align-items-center text-secondary mt-2\">\n @if (account()!.company) {\n <span class=\"label me-4\">{{ account()!.company | translate }}</span>\n }\n @if (account()!.role) {\n <span class=\"ms-0 badge bg-default\">\n {{ account()!.role | translate }}\n </span>\n }\n </div>\n </div>\n @if (accountItems()?.length) {\n <div class=\"d-block dropdown-divider\" role=\"separator\"></div>\n <si-header-dropdown-items-factory [items]=\"accountItems()!\" />\n }\n @if (account()!.customContent) {\n <div class=\"d-block dropdown-divider\" role=\"separator\"></div>\n <ng-content />\n }\n </si-header-dropdown>\n </ng-template>\n }\n </si-header-actions>\n } @else {\n <!-- Seems like @if makes ng-content believe that there is always a header-actions section. So we have to add it here. -->\n <si-header-actions />\n }\n</si-application-header>\n\n<ng-template #launchpad>\n <si-launchpad-factory\n [showLessAppsText]=\"showLessAppsTitle()\"\n [showMoreAppsText]=\"showMoreAppsTitle()\"\n [closeText]=\"closeAppSwitcherText()\"\n [titleText]=\"appSwitcherTitle()\"\n [subtitleText]=\"appSwitcherSubTitle()\"\n [enableFavorites]=\"appItemsFavorites()\"\n [favoriteAppsText]=\"favoriteAppsTitle()\"\n [apps]=\"newAppItems!\"\n (favoriteChange)=\"onFavoriteChange($event)\"\n />\n</ng-template>\n<ng-template #actions>\n <ng-content select=\"si-navbar-item[quickAction], element-navbar-item[quickAction='true']\" />\n</ng-template>\n", styles: [".header-custom-logo{content:initial;inline-size:auto}\n"] }]
281
+ }] });
282
+
283
+ /**
284
+ * Copyright Siemens 2016 - 2025.
285
+ * SPDX-License-Identifier: MIT
286
+ */
287
+ /** @deprecated Use the new `si-application-header` instead. */
288
+ class SiNavbarItemComponent {
289
+ /**
290
+ * MenuItem to display in the navbar.
291
+ */
292
+ item = input.required();
293
+ /**
294
+ * Is the item a quick action displayed on the end (right in LTR) side
295
+ *
296
+ * @defaultValue false
297
+ */
298
+ quickAction = input(false, { transform: booleanAttribute });
299
+ dropdownTrigger = viewChild(SiHeaderDropdownTriggerDirective);
300
+ active = false;
301
+ navbar = inject(SiNavbarPrimaryComponent);
302
+ hasBadge = false;
303
+ ngOnInit() {
304
+ this.navbar.header().closeMobileMenus.subscribe(() => this.dropdownTrigger()?.close());
305
+ this.navbar.navItemCount.update(value => value + 1);
306
+ }
307
+ ngDoCheck() {
308
+ const item = this.item();
309
+ const newHasBadge = !!(item.badge ?? item.badgeDot);
310
+ if (this.quickAction() && this.hasBadge !== newHasBadge) {
311
+ this.hasBadge = newHasBadge;
312
+ if (this.hasBadge) {
313
+ this.navbar.collapsibleActions()?.badgeCount.update(value => value + 1);
314
+ }
315
+ else {
316
+ this.navbar.collapsibleActions()?.badgeCount.update(value => value - 1);
317
+ }
318
+ }
319
+ }
320
+ ngOnDestroy() {
321
+ this.navbar.navItemCount.update(value => value - 1);
322
+ }
323
+ click() {
324
+ if (!this.dropdownTrigger()) {
325
+ this.navbar.header().closeMobileMenus.next();
326
+ }
327
+ }
328
+ get visuallyHideTitle() {
329
+ return !this.navbar.collapsibleActions()?.mobileExpanded();
330
+ }
331
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
332
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiNavbarItemComponent, isStandalone: true, selector: "si-navbar-item", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, quickAction: { classPropertyName: "quickAction", publicName: "quickAction", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "d-contents" }, viewQueries: [{ propertyName: "dropdownTrigger", first: true, predicate: SiHeaderDropdownTriggerDirective, descendants: true, isSignal: true }], ngImport: i0, template: "@if (item().items || item().customContent) {\n <button\n type=\"button\"\n class=\"header-item focus-inside\"\n [class.active]=\"active\"\n [attr.aria-label]=\"item().title | translate\"\n [siHeaderDropdownTriggerFor]=\"dropdown\"\n (click)=\"click()\"\n >\n <ng-container *ngTemplateOutlet=\"itemContent\" />\n <div class=\"element-down-2 dropdown-caret\" aria-hidden=\"true\"></div>\n </button>\n} @else {\n <a\n class=\"header-item focus-inside\"\n activeClass=\"active\"\n [siLink]=\"item()\"\n [attr.aria-label]=\"item().title | translate\"\n (activeChange)=\"active = $event\"\n (click)=\"click()\"\n >\n <ng-container *ngTemplateOutlet=\"itemContent\" />\n </a>\n}\n\n<ng-template #itemContent>\n <div class=\"icon\" aria-hidden=\"true\" [ngClass]=\"item().icon\"></div>\n @if (item().badge) {\n <div class=\"badge-text\">{{ item().badge }}</div>\n }\n <ng-content select=\"si-avatar\" />\n <div class=\"item-title\" [class.visually-hidden]=\"visuallyHideTitle\">\n {{ item().title | translate }}\n </div>\n</ng-template>\n\n<ng-template #dropdown>\n <si-header-dropdown>\n @if (item().items) {\n <si-header-dropdown-items-factory [items]=\"item().items!\" (activeChange)=\"active = $event\" />\n }\n @if (item().customContent) {\n <ng-content />\n }\n </si-header-dropdown>\n</ng-template>\n", dependencies: [{ kind: "directive", type: SiLinkDirective, selector: "[siLink]", inputs: ["siLink", "siLinkDefaultTarget", "actionParam", "activeClass", "exactMatch", "ariaCurrent"], outputs: ["activeChange"], exportAs: ["siLink"] }, { kind: "ngmodule", type: SiTranslateModule }, { kind: "pipe", type: i1.SiTranslatePipe, name: "translate" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SiHeaderDropdownComponent, selector: "si-header-dropdown" }, { kind: "component", type: SiHeaderDropdownItemsFactoryComponent, selector: "si-header-dropdown-items-factory", inputs: ["items"], outputs: ["activeChange"] }, { kind: "directive", type: SiHeaderDropdownTriggerDirective, selector: "[siHeaderDropdownTriggerFor]", inputs: ["siHeaderDropdownTriggerFor", "dropdownData"], outputs: ["openChange"], exportAs: ["siHeaderDropdownTrigger"] }] });
333
+ }
334
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarItemComponent, decorators: [{
335
+ type: Component,
336
+ args: [{ selector: 'si-navbar-item', imports: [
337
+ SiLinkDirective,
338
+ SiTranslateModule,
339
+ NgClass,
340
+ NgTemplateOutlet,
341
+ SiHeaderDropdownComponent,
342
+ SiHeaderDropdownItemsFactoryComponent,
343
+ SiHeaderDropdownTriggerDirective
344
+ ], host: { class: 'd-contents' }, template: "@if (item().items || item().customContent) {\n <button\n type=\"button\"\n class=\"header-item focus-inside\"\n [class.active]=\"active\"\n [attr.aria-label]=\"item().title | translate\"\n [siHeaderDropdownTriggerFor]=\"dropdown\"\n (click)=\"click()\"\n >\n <ng-container *ngTemplateOutlet=\"itemContent\" />\n <div class=\"element-down-2 dropdown-caret\" aria-hidden=\"true\"></div>\n </button>\n} @else {\n <a\n class=\"header-item focus-inside\"\n activeClass=\"active\"\n [siLink]=\"item()\"\n [attr.aria-label]=\"item().title | translate\"\n (activeChange)=\"active = $event\"\n (click)=\"click()\"\n >\n <ng-container *ngTemplateOutlet=\"itemContent\" />\n </a>\n}\n\n<ng-template #itemContent>\n <div class=\"icon\" aria-hidden=\"true\" [ngClass]=\"item().icon\"></div>\n @if (item().badge) {\n <div class=\"badge-text\">{{ item().badge }}</div>\n }\n <ng-content select=\"si-avatar\" />\n <div class=\"item-title\" [class.visually-hidden]=\"visuallyHideTitle\">\n {{ item().title | translate }}\n </div>\n</ng-template>\n\n<ng-template #dropdown>\n <si-header-dropdown>\n @if (item().items) {\n <si-header-dropdown-items-factory [items]=\"item().items!\" (activeChange)=\"active = $event\" />\n }\n @if (item().customContent) {\n <ng-content />\n }\n </si-header-dropdown>\n</ng-template>\n" }]
345
+ }] });
346
+
347
+ /**
348
+ * Copyright Siemens 2016 - 2025.
349
+ * SPDX-License-Identifier: MIT
350
+ */
351
+
352
+ /**
353
+ * Copyright Siemens 2016 - 2025.
354
+ * SPDX-License-Identifier: MIT
355
+ */
356
+
357
+ /**
358
+ * Copyright Siemens 2016 - 2025.
359
+ * SPDX-License-Identifier: MIT
360
+ */
361
+ const components = [SiNavbarItemComponent, SiNavbarPrimaryComponent];
362
+ /** @deprecated Use the new `si-application-header` instead. */
363
+ class SiNavbarModule {
364
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
365
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarModule, imports: [SiNavbarItemComponent, SiNavbarPrimaryComponent], exports: [SiNavbarItemComponent, SiNavbarPrimaryComponent] });
366
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarModule, imports: [components] });
367
+ }
368
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiNavbarModule, decorators: [{
369
+ type: NgModule,
370
+ args: [{
371
+ imports: components,
372
+ exports: components
373
+ }]
374
+ }] });
375
+
376
+ /**
377
+ * Copyright Siemens 2016 - 2025.
378
+ * SPDX-License-Identifier: MIT
379
+ */
380
+
381
+ /**
382
+ * Generated bundle index. Do not edit.
383
+ */
384
+
385
+ export { SiNavbarItemComponent, SiNavbarModule, SiNavbarPrimaryComponent };
386
+ //# sourceMappingURL=siemens-element-ng-navbar.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siemens-element-ng-navbar.mjs","sources":["../../../../projects/element-ng/navbar/si-navbar-primary/si-navbar-primary.component.ts","../../../../projects/element-ng/navbar/si-navbar-primary/si-navbar-primary.component.html","../../../../projects/element-ng/navbar/si-navbar-item/si-navbar-item.component.ts","../../../../projects/element-ng/navbar/si-navbar-item/si-navbar-item.component.html","../../../../projects/element-ng/navbar/si-navbar-item/index.ts","../../../../projects/element-ng/navbar/si-navbar-primary/index.ts","../../../../projects/element-ng/navbar/si-navbar.module.ts","../../../../projects/element-ng/navbar/index.ts","../../../../projects/element-ng/navbar/siemens-element-ng-navbar.ts"],"sourcesContent":["/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n Component,\n input,\n OnChanges,\n output,\n signal,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport {\n App,\n AppCategory,\n FavoriteChangeEvent,\n SiApplicationHeaderComponent,\n SiHeaderAccountItemComponent,\n SiHeaderActionsDirective,\n SiHeaderBrandDirective,\n SiHeaderCollapsibleActionsComponent,\n SiHeaderLogoDirective,\n SiHeaderNavigationComponent,\n SiHeaderNavigationItemComponent,\n SiLaunchpadFactoryComponent\n} from '@siemens/element-ng/application-header';\nimport { MenuItem } from '@siemens/element-ng/common';\nimport {\n HeaderWithDropdowns,\n SI_HEADER_WITH_DROPDOWNS,\n SiHeaderDropdownComponent,\n SiHeaderDropdownItemsFactoryComponent,\n SiHeaderDropdownTriggerDirective\n} from '@siemens/element-ng/header-dropdown';\nimport { Link, SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiTranslateModule } from '@siemens/element-translate-ng/translate';\nimport { defer } from 'rxjs';\n\nimport { AccountItem } from '../account.model';\nimport { AppItem, AppItemCategory } from './si-navbar-primary.model';\n\n/** @deprecated Use the new `si-application-header` instead. */\n@Component({\n selector: 'si-navbar-primary',\n templateUrl: './si-navbar-primary.component.html',\n imports: [\n A11yModule,\n NgTemplateOutlet,\n SiLinkDirective,\n SiTranslateModule,\n SiApplicationHeaderComponent,\n SiLaunchpadFactoryComponent,\n SiHeaderAccountItemComponent,\n SiHeaderDropdownComponent,\n SiHeaderDropdownTriggerDirective,\n SiHeaderDropdownItemsFactoryComponent,\n SiHeaderNavigationItemComponent,\n SiHeaderBrandDirective,\n SiHeaderNavigationComponent,\n SiHeaderActionsDirective,\n SiHeaderCollapsibleActionsComponent,\n SiHeaderLogoDirective\n ],\n styles: `\n .header-custom-logo {\n content: initial;\n inline-size: auto;\n }\n `,\n providers: [{ provide: SI_HEADER_WITH_DROPDOWNS, useExisting: SiNavbarPrimaryComponent }]\n})\nexport class SiNavbarPrimaryComponent implements OnChanges, HeaderWithDropdowns {\n /**\n * List of navbar items which should be displayed at the left (in LTR) side next to the\n * banner.\n *\n * @defaultValue []\n */\n readonly primaryItems = input<MenuItem[]>([]);\n /**\n * List of account dropdown elements (defined by `title` and `link`).\n *\n * The menu item can have submenu items (supplying `items`: MenuItem[]).\n * Submenu items can be divided into groups by separators. A separator is\n * an item with only '-' set as `title`.\n *\n * Alternatively, you can can create a custom content by putting your html\n * code between the <si-navbar-primary> tags. In this case you don't need this\n * property (will be ignored if you set anyway).\n */\n readonly accountItems = input<MenuItem[]>();\n /**\n * Account settings name (`title`) and profile picture (`image` or `icon`)\n */\n readonly account = input<AccountItem>();\n /**\n * URL of the navbar brand.\n */\n readonly logoUrl = input<string>();\n /**\n * Title of the application.\n */\n readonly appTitle = input<string>();\n /**\n * Configurable home link that is used at the logo and app title.\n * Use `undefined` to disable the link.\n *\n * @defaultValue\n * ```\n * { link: '/' }\n * ```\n */\n readonly home = input<Link | undefined>({ link: '/' });\n /**\n * title for the launchpad\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_LAUNCHPAD.TITLE:Launchpad`\n * ```\n */\n readonly appSwitcherTitle = input($localize`:@@SI_LAUNCHPAD.TITLE:Launchpad`);\n\n /**\n * sub-title for the launchpad\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_LAUNCHPAD.SUB_TITLE:Access all your apps`\n * ```\n */\n readonly appSwitcherSubTitle = input($localize`:@@SI_LAUNCHPAD.SUB_TITLE:Access all your apps`);\n\n /**\n * Title or translate key for the favorite apps section.\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_LAUNCHPAD.FAVORITE_APPS:Favorite apps`\n * ```\n */\n readonly favoriteAppsTitle = input($localize`:@@SI_LAUNCHPAD.FAVORITE_APPS:Favorite apps`);\n\n /**\n * Title or translate key for the default apps section.\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_LAUNCHPAD.DEFAULT_CATEGORY_TITLE:Apps`\n * ```\n */\n readonly defaultAppsTitle = input($localize`:@@SI_LAUNCHPAD.DEFAULT_CATEGORY_TITLE:Apps`);\n\n /**\n * Title or translate key for the show more apps button.\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_LAUNCHPAD.SHOW_MORE:Show more`\n * ```\n */\n readonly showMoreAppsTitle = input($localize`:@@SI_LAUNCHPAD.SHOW_MORE:Show more`);\n\n /**\n * Title or translate key for the show less apps button.\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_LAUNCHPAD.SHOW_LESS:Show less`\n * ```\n */\n readonly showLessAppsTitle = input($localize`:@@SI_LAUNCHPAD.SHOW_LESS:Show less`);\n\n /**\n * All app items shown in the launchpad. The launchpad will not be visible if the\n * app items are undefined. The launchpad will be visible if the app items are an\n * empty array.\n */\n readonly appItems = input<AppItem[]>();\n /**\n * Like `appItems` but with the addition of categories. If this is set, `appItems` is ignored.\n */\n readonly appCategoryItems = input<AppItemCategory[]>();\n\n /**\n * Allow the user to favorite apps which will then be displayed at the top.\n *\n * @defaultValue false\n */\n readonly appItemsFavorites = input(false, { transform: booleanAttribute });\n /**\n * \"all apps\" link in the launchpad\n */\n readonly allAppsLink = input<MenuItem>();\n /**\n * Specifies whether the component should automatically be focused as soon as it is loaded.\n *\n * @defaultValue false\n */\n readonly focusOnLoad = input(false, { transform: booleanAttribute });\n\n /**\n * Marks the navbar as primary navigation element. Needed for a11y (screen reader).\n * Only one element should be primary. If multiple navbars are used, it's up to the\n * user of the components to label them in the correct order.\n *\n * @defaultValue 'Primary'\n */\n readonly navAriaLabel = input('Primary');\n\n /**\n * Text to close the launchpad. Needed for a11y.\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_LAUNCHPAD.CLOSE:Close launchpad`\n * ```\n */\n readonly closeAppSwitcherText = input($localize`:@@SI_LAUNCHPAD.CLOSE:Close launchpad`);\n\n /**\n * Text for the launchpad icon. Needed for a11y.\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_NAVBAR.OPEN_LAUNCHPAD:Open launchpad`\n * ```\n */\n readonly openAppSwitcherText = input($localize`:@@SI_NAVBAR.OPEN_LAUNCHPAD:Open launchpad`);\n\n /**\n * Text or translate key for the toggle navigation icon. Needed for a11y.\n *\n * @defaultValue\n * ```\n * $localize`:@@SI_NAVBAR.TOGGLE_NAVIGATION:Toggle navigation`\n * ```\n */\n readonly toggleNavigationText = input(\n $localize`:@@SI_NAVBAR.TOGGLE_NAVIGATION:Toggle navigation`\n );\n\n /**\n * Aria label for the main menu landmark\n *\n * @defaultValue 'Header main'\n */\n readonly ariaLabelMainMenu = input('Header main');\n\n /**\n * Aria label for the secondary menu landmark\n *\n * @defaultValue 'Header secondary'\n */\n readonly ariaLabelSecondaryMenu = input('Header secondary');\n\n readonly appItemFavoriteChanged = output<[AppItem, boolean]>();\n\n /** @internal */\n readonly header = viewChild.required(SiApplicationHeaderComponent);\n /** @internal */\n readonly collapsibleActions = viewChild(SiHeaderCollapsibleActionsComponent);\n /** @internal */\n readonly navItemCount = signal(0);\n\n protected newAppItems?: App[] | AppCategory[];\n protected active?: MenuItem;\n\n /** @internal */\n // defer is required as header is not available at the time of creation.`\n readonly inlineDropdown = defer(() => this.header().inlineDropdown);\n\n /** @internal */\n onDropdownItemTriggered(): void {\n this.header().onDropdownItemTriggered();\n }\n\n /** @internal */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.appItems || changes.appCategoryItems) {\n const appItems = this.appItems();\n const appCategoryItems = this.appCategoryItems();\n if (appCategoryItems) {\n this.newAppItems = appCategoryItems.map(category => ({\n // Violation by intention.\n // Empty strings should also be replaced by the default title.\n // We rely on this in our examples, so projects might as well.\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n name: category.category || this.defaultAppsTitle(),\n apps: this.convertApps(category.items)\n }));\n const allAppsLink = this.allAppsLink();\n if (allAppsLink && this.newAppItems.length) {\n const lastCategory = this.newAppItems.at(-1)!;\n lastCategory.apps.push({\n name: allAppsLink.title!,\n iconClass: allAppsLink.icon ?? 'element-plus',\n href: allAppsLink.href!,\n target: allAppsLink.target,\n _noFavorite: true // this should not show up in public API, but we need it for now.\n } as App);\n }\n } else if (appItems) {\n this.newAppItems = this.convertApps(appItems!);\n const allAppsLink = this.allAppsLink();\n if (allAppsLink) {\n this.newAppItems.push({\n name: allAppsLink.title!,\n iconClass: allAppsLink.icon ?? 'element-plus',\n href: allAppsLink.href!,\n target: allAppsLink.target,\n _noFavorite: true // this should not show up in public API, but we need it for now.\n } as App);\n }\n }\n }\n }\n\n private convertApps(apps: AppItem[]): App[] {\n return apps.map(app => ({\n name: app.title!,\n href: app.href!,\n external: app.isExternal,\n active: app.isActive,\n target: app.target,\n iconClass: app.icon,\n favorite: app.isFavorite,\n _src: app // this should not show up in public API, but we need it for now.\n }));\n }\n\n protected onFavoriteChange({ app, favorite }: FavoriteChangeEvent): void {\n this.appItemFavoriteChanged.emit([(app as any)._src, favorite]);\n }\n}\n","<si-application-header [launchpad]=\"newAppItems ? launchpad : undefined\">\n <si-header-brand>\n @if (logoUrl()) {\n <a class=\"header-logo header-custom-logo px-6 focus-inside\" [siLink]=\"home()\">\n <img alt=\"Siemens logo\" [src]=\"logoUrl()\" />\n </a>\n } @else {\n <a siHeaderLogo class=\"d-none d-md-flex\" [siLink]=\"home()\"></a>\n }\n @if (appTitle()) {\n <span class=\"application-name\">{{ appTitle() }}</span>\n }\n </si-header-brand>\n\n @if (primaryItems().length) {\n <si-header-navigation [attr.aria-label]=\"ariaLabelMainMenu()\">\n @for (item of primaryItems(); track $index) {\n @if (item.items) {\n <button\n type=\"button\"\n si-header-navigation-item\n [siHeaderDropdownTriggerFor]=\"dropdown\"\n [class.active]=\"active === item\"\n >\n {{ item.title | translate }}\n <ng-template #dropdown>\n <si-header-dropdown>\n <si-header-dropdown-items-factory\n [items]=\"item.items\"\n (activeChange)=\"$event ? (active = item) : null\"\n />\n </si-header-dropdown>\n </ng-template>\n </button>\n } @else {\n <a\n si-header-navigation-item\n activeClass=\"active\"\n [siLink]=\"item\"\n (activeChange)=\"$event ? (active = item) : null\"\n >\n {{ item.title | translate }}\n </a>\n }\n }\n </si-header-navigation>\n }\n @if (navItemCount() || account()) {\n <si-header-actions [attr.aria-label]=\"ariaLabelSecondaryMenu()\">\n @if (navItemCount()) {\n @if (navItemCount() === 1) {\n <ng-container *ngTemplateOutlet=\"actions\" />\n } @else {\n <si-header-collapsible-actions>\n <ng-container *ngTemplateOutlet=\"actions\" />\n </si-header-collapsible-actions>\n }\n }\n @if (account()) {\n <!--eslint-disable @angular-eslint/template/elements-content -->\n <button\n si-header-account-item\n type=\"button\"\n [name]=\"account()!.title\"\n [initials]=\"account()!.initials\"\n [imageUrl]=\"account()!.image\"\n [siHeaderDropdownTriggerFor]=\"accountDropdown\"\n ></button>\n <!--eslint-enable @angular-eslint/template/elements-content -->\n\n <ng-template #accountDropdown>\n <si-header-dropdown>\n <div class=\"d-block userinfo mx-5 mb-4\">\n <div class=\"si-title-2 text-truncate\">{{ account()!.title }}</div>\n @if (account()!.email) {\n <div class=\"email\">{{ account()!.email }}</div>\n }\n <div class=\"d-flex align-items-center text-secondary mt-2\">\n @if (account()!.company) {\n <span class=\"label me-4\">{{ account()!.company | translate }}</span>\n }\n @if (account()!.role) {\n <span class=\"ms-0 badge bg-default\">\n {{ account()!.role | translate }}\n </span>\n }\n </div>\n </div>\n @if (accountItems()?.length) {\n <div class=\"d-block dropdown-divider\" role=\"separator\"></div>\n <si-header-dropdown-items-factory [items]=\"accountItems()!\" />\n }\n @if (account()!.customContent) {\n <div class=\"d-block dropdown-divider\" role=\"separator\"></div>\n <ng-content />\n }\n </si-header-dropdown>\n </ng-template>\n }\n </si-header-actions>\n } @else {\n <!-- Seems like @if makes ng-content believe that there is always a header-actions section. So we have to add it here. -->\n <si-header-actions />\n }\n</si-application-header>\n\n<ng-template #launchpad>\n <si-launchpad-factory\n [showLessAppsText]=\"showLessAppsTitle()\"\n [showMoreAppsText]=\"showMoreAppsTitle()\"\n [closeText]=\"closeAppSwitcherText()\"\n [titleText]=\"appSwitcherTitle()\"\n [subtitleText]=\"appSwitcherSubTitle()\"\n [enableFavorites]=\"appItemsFavorites()\"\n [favoriteAppsText]=\"favoriteAppsTitle()\"\n [apps]=\"newAppItems!\"\n (favoriteChange)=\"onFavoriteChange($event)\"\n />\n</ng-template>\n<ng-template #actions>\n <ng-content select=\"si-navbar-item[quickAction], element-navbar-item[quickAction='true']\" />\n</ng-template>\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n Component,\n DoCheck,\n inject,\n input,\n OnDestroy,\n OnInit,\n viewChild\n} from '@angular/core';\nimport { MenuItem } from '@siemens/element-ng/common';\nimport {\n SiHeaderDropdownComponent,\n SiHeaderDropdownItemsFactoryComponent,\n SiHeaderDropdownTriggerDirective\n} from '@siemens/element-ng/header-dropdown';\nimport { SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiTranslateModule } from '@siemens/element-translate-ng/translate';\n\nimport { SiNavbarPrimaryComponent } from '../si-navbar-primary/si-navbar-primary.component';\n\n/** @deprecated Use the new `si-application-header` instead. */\n@Component({\n selector: 'si-navbar-item',\n templateUrl: './si-navbar-item.component.html',\n imports: [\n SiLinkDirective,\n SiTranslateModule,\n NgClass,\n NgTemplateOutlet,\n SiHeaderDropdownComponent,\n SiHeaderDropdownItemsFactoryComponent,\n SiHeaderDropdownTriggerDirective\n ],\n host: { class: 'd-contents' }\n})\nexport class SiNavbarItemComponent implements OnInit, DoCheck, OnDestroy {\n /**\n * MenuItem to display in the navbar.\n */\n readonly item = input.required<MenuItem>();\n\n /**\n * Is the item a quick action displayed on the end (right in LTR) side\n *\n * @defaultValue false\n */\n readonly quickAction = input(false, { transform: booleanAttribute });\n\n readonly dropdownTrigger = viewChild(SiHeaderDropdownTriggerDirective);\n\n protected active = false;\n protected navbar = inject(SiNavbarPrimaryComponent);\n\n private hasBadge = false;\n\n ngOnInit(): void {\n this.navbar.header().closeMobileMenus.subscribe(() => this.dropdownTrigger()?.close());\n this.navbar.navItemCount.update(value => value + 1);\n }\n\n ngDoCheck(): void {\n const item = this.item();\n const newHasBadge = !!(item.badge ?? item.badgeDot);\n if (this.quickAction() && this.hasBadge !== newHasBadge) {\n this.hasBadge = newHasBadge;\n if (this.hasBadge) {\n this.navbar.collapsibleActions()?.badgeCount.update(value => value + 1);\n } else {\n this.navbar.collapsibleActions()?.badgeCount.update(value => value - 1);\n }\n }\n }\n\n ngOnDestroy(): void {\n this.navbar.navItemCount.update(value => value - 1);\n }\n\n protected click(): void {\n if (!this.dropdownTrigger()) {\n this.navbar.header().closeMobileMenus.next();\n }\n }\n\n protected get visuallyHideTitle(): boolean {\n return !this.navbar.collapsibleActions()?.mobileExpanded();\n }\n}\n","@if (item().items || item().customContent) {\n <button\n type=\"button\"\n class=\"header-item focus-inside\"\n [class.active]=\"active\"\n [attr.aria-label]=\"item().title | translate\"\n [siHeaderDropdownTriggerFor]=\"dropdown\"\n (click)=\"click()\"\n >\n <ng-container *ngTemplateOutlet=\"itemContent\" />\n <div class=\"element-down-2 dropdown-caret\" aria-hidden=\"true\"></div>\n </button>\n} @else {\n <a\n class=\"header-item focus-inside\"\n activeClass=\"active\"\n [siLink]=\"item()\"\n [attr.aria-label]=\"item().title | translate\"\n (activeChange)=\"active = $event\"\n (click)=\"click()\"\n >\n <ng-container *ngTemplateOutlet=\"itemContent\" />\n </a>\n}\n\n<ng-template #itemContent>\n <div class=\"icon\" aria-hidden=\"true\" [ngClass]=\"item().icon\"></div>\n @if (item().badge) {\n <div class=\"badge-text\">{{ item().badge }}</div>\n }\n <ng-content select=\"si-avatar\" />\n <div class=\"item-title\" [class.visually-hidden]=\"visuallyHideTitle\">\n {{ item().title | translate }}\n </div>\n</ng-template>\n\n<ng-template #dropdown>\n <si-header-dropdown>\n @if (item().items) {\n <si-header-dropdown-items-factory [items]=\"item().items!\" (activeChange)=\"active = $event\" />\n }\n @if (item().customContent) {\n <ng-content />\n }\n </si-header-dropdown>\n</ng-template>\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-navbar-item.component';\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-navbar-primary.component';\nexport * from './si-navbar-primary.model';\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiNavbarItemComponent } from './si-navbar-item/si-navbar-item.component';\nimport { SiNavbarPrimaryComponent } from './si-navbar-primary/si-navbar-primary.component';\n\nconst components = [SiNavbarItemComponent, SiNavbarPrimaryComponent];\n\n/** @deprecated Use the new `si-application-header` instead. */\n@NgModule({\n imports: components,\n exports: components\n})\nexport class SiNavbarModule {}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-navbar-item/index';\nexport * from './si-navbar-primary/index';\nexport * from './si-navbar.module';\nexport * from './account.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-translate.mjs","sources":["../../../../projects/element-ng/translate/si-translatable-keys.interface.ts","../../../../projects/element-ng/translate/si-translatable-overrides.provider.ts","../../../../projects/element-ng/translate/index.ts","../../../../projects/element-ng/translate/siemens-element-ng-translate.ts"],"sourcesContent":["/* eslint-disable */\n\n// Auto-generated file. Run 'yarn update-translatable-keys' to update.\n\nexport interface SiTranslatableKeys {\n 'SI_APPLICATION_HEADER.LAUNCHPAD'?: string;\n 'SI_APPLICATION_HEADER.TOGGLE_ACTIONS'?: string;\n 'SI_APPLICATION_HEADER.TOGGLE_NAVIGATION'?: string;\n 'SI_LAUNCHPAD.CLOSE'?: string;\n 'SI_LAUNCHPAD.FAVORITE_APPS'?: string;\n 'SI_LAUNCHPAD.SHOW_LESS'?: string;\n 'SI_LAUNCHPAD.SHOW_MORE'?: string;\n 'SI_LAUNCHPAD.SUBTITLE'?: string;\n 'SI_LAUNCHPAD.TITLE'?: string;\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { Provider } from '@angular/core';\nimport { SI_TRANSLATABLE_VALUES } from '@siemens/element-translate-ng/translate';\n\nimport { SiTranslatableKeys } from './si-translatable-keys.interface';\n\nexport const provideSiTranslatableOverrides: (values: SiTranslatableKeys) => Provider = values => ({\n useValue: values,\n multi: true,\n provide: SI_TRANSLATABLE_VALUES\n});\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-translatable-keys.interface';\nexport * from './si-translatable-overrides.provider';\n// @deprecated use @simpl-labs/element-translate-ng/translate directly\nexport * from '@siemens/element-translate-ng/translate';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAAA;;MCSa,8BAA8B,GAA6C,MAAM,KAAK;AACjG,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,OAAO,EAAE;AACV,CAAA;;ACbD;;;AAGG;;ACHH;;AAEG;;;;"}
1
+ {"version":3,"file":"siemens-element-ng-translate.mjs","sources":["../../../../projects/element-ng/translate/si-translatable-keys.interface.ts","../../../../projects/element-ng/translate/si-translatable-overrides.provider.ts","../../../../projects/element-ng/translate/index.ts","../../../../projects/element-ng/translate/siemens-element-ng-translate.ts"],"sourcesContent":["/* eslint-disable */\n\n// Auto-generated file. Run 'yarn update-translatable-keys' to update.\n\nexport interface SiTranslatableKeys {\n 'SI_APPLICATION_HEADER.LAUNCHPAD'?: string;\n 'SI_APPLICATION_HEADER.TOGGLE_ACTIONS'?: string;\n 'SI_APPLICATION_HEADER.TOGGLE_NAVIGATION'?: string;\n 'SI_LAUNCHPAD.CLOSE'?: string;\n 'SI_LAUNCHPAD.DEFAULT_CATEGORY_TITLE'?: string;\n 'SI_LAUNCHPAD.FAVORITE_APPS'?: string;\n 'SI_LAUNCHPAD.SHOW_LESS'?: string;\n 'SI_LAUNCHPAD.SHOW_MORE'?: string;\n 'SI_LAUNCHPAD.SUBTITLE'?: string;\n 'SI_LAUNCHPAD.SUB_TITLE'?: string;\n 'SI_LAUNCHPAD.TITLE'?: string;\n 'SI_NAVBAR.OPEN_LAUNCHPAD'?: string;\n 'SI_NAVBAR.TOGGLE_NAVIGATION'?: string;\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { Provider } from '@angular/core';\nimport { SI_TRANSLATABLE_VALUES } from '@siemens/element-translate-ng/translate';\n\nimport { SiTranslatableKeys } from './si-translatable-keys.interface';\n\nexport const provideSiTranslatableOverrides: (values: SiTranslatableKeys) => Provider = values => ({\n useValue: values,\n multi: true,\n provide: SI_TRANSLATABLE_VALUES\n});\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-translatable-keys.interface';\nexport * from './si-translatable-overrides.provider';\n// @deprecated use @simpl-labs/element-translate-ng/translate directly\nexport * from '@siemens/element-translate-ng/translate';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAAA;;MCSa,8BAA8B,GAA6C,MAAM,KAAK;AACjG,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,OAAO,EAAE;AACV,CAAA;;ACbD;;;AAGG;;ACHH;;AAEG;;;;"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Copyright Siemens 2016 - 2025.
3
+ * SPDX-License-Identifier: MIT
4
+ */
5
+ import { EntityStatusType, MenuItem } from '@siemens/element-ng/common';
6
+ import { TranslatableString } from '@siemens/element-translate-ng/translate';
7
+ /** @deprecated Use the new `si-application-header` instead. */
8
+ export interface AccountItem extends MenuItem {
9
+ /**
10
+ * Full name of user
11
+ */
12
+ title: string;
13
+ /**
14
+ * Initials to be displayed as avatar if no `icon` and also no `image` are provided.
15
+ * If also no initials are provided, they will be automatically calculated from the `title`.
16
+ */
17
+ initials?: string;
18
+ /**
19
+ * The status (success, info, warning, caution, danger, critical, pending, progress) to be
20
+ * visualized.
21
+ */
22
+ avatarStatus?: EntityStatusType;
23
+ /**
24
+ * aria-label for avatar status
25
+ */
26
+ avatarStatusAriaLabel?: TranslatableString;
27
+ /**
28
+ * Email address of the user
29
+ */
30
+ email?: string;
31
+ /**
32
+ * Name of the Company
33
+ */
34
+ company?: string;
35
+ /**
36
+ * Role name shown as a badge in the bottom
37
+ */
38
+ role?: string;
39
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Copyright Siemens 2016 - 2025.
3
+ * SPDX-License-Identifier: MIT
4
+ */
5
+ export * from './si-navbar-item/index';
6
+ export * from './si-navbar-primary/index';
7
+ export * from './si-navbar.module';
8
+ export * from './account.model';
@@ -0,0 +1,3 @@
1
+ {
2
+ "module": "../fesm2022/siemens-element-ng-navbar.mjs"
3
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Copyright Siemens 2016 - 2025.
3
+ * SPDX-License-Identifier: MIT
4
+ */
5
+ export * from './si-navbar-item.component';
@@ -0,0 +1,29 @@
1
+ import { DoCheck, OnDestroy, OnInit } from '@angular/core';
2
+ import { MenuItem } from '@siemens/element-ng/common';
3
+ import { SiHeaderDropdownTriggerDirective } from '@siemens/element-ng/header-dropdown';
4
+ import { SiNavbarPrimaryComponent } from '../si-navbar-primary/si-navbar-primary.component';
5
+ import * as i0 from "@angular/core";
6
+ /** @deprecated Use the new `si-application-header` instead. */
7
+ export declare class SiNavbarItemComponent implements OnInit, DoCheck, OnDestroy {
8
+ /**
9
+ * MenuItem to display in the navbar.
10
+ */
11
+ readonly item: import("@angular/core").InputSignal<MenuItem>;
12
+ /**
13
+ * Is the item a quick action displayed on the end (right in LTR) side
14
+ *
15
+ * @defaultValue false
16
+ */
17
+ readonly quickAction: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
18
+ readonly dropdownTrigger: import("@angular/core").Signal<SiHeaderDropdownTriggerDirective | undefined>;
19
+ protected active: boolean;
20
+ protected navbar: SiNavbarPrimaryComponent;
21
+ private hasBadge;
22
+ ngOnInit(): void;
23
+ ngDoCheck(): void;
24
+ ngOnDestroy(): void;
25
+ protected click(): void;
26
+ protected get visuallyHideTitle(): boolean;
27
+ static ɵfac: i0.ɵɵFactoryDeclaration<SiNavbarItemComponent, never>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<SiNavbarItemComponent, "si-navbar-item", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "quickAction": { "alias": "quickAction"; "required": false; "isSignal": true; }; }, {}, never, ["si-avatar", "*"], true, never>;
29
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright Siemens 2016 - 2025.
3
+ * SPDX-License-Identifier: MIT
4
+ */
5
+ export * from './si-navbar-primary.component';
6
+ export * from './si-navbar-primary.model';
@@ -0,0 +1,198 @@
1
+ import { OnChanges, SimpleChanges } from '@angular/core';
2
+ import { App, AppCategory, FavoriteChangeEvent, SiApplicationHeaderComponent, SiHeaderCollapsibleActionsComponent } from '@siemens/element-ng/application-header';
3
+ import { MenuItem } from '@siemens/element-ng/common';
4
+ import { HeaderWithDropdowns } from '@siemens/element-ng/header-dropdown';
5
+ import { Link } from '@siemens/element-ng/link';
6
+ import { AccountItem } from '../account.model';
7
+ import { AppItem, AppItemCategory } from './si-navbar-primary.model';
8
+ import * as i0 from "@angular/core";
9
+ /** @deprecated Use the new `si-application-header` instead. */
10
+ export declare class SiNavbarPrimaryComponent implements OnChanges, HeaderWithDropdowns {
11
+ /**
12
+ * List of navbar items which should be displayed at the left (in LTR) side next to the
13
+ * banner.
14
+ *
15
+ * @defaultValue []
16
+ */
17
+ readonly primaryItems: import("@angular/core").InputSignal<MenuItem[]>;
18
+ /**
19
+ * List of account dropdown elements (defined by `title` and `link`).
20
+ *
21
+ * The menu item can have submenu items (supplying `items`: MenuItem[]).
22
+ * Submenu items can be divided into groups by separators. A separator is
23
+ * an item with only '-' set as `title`.
24
+ *
25
+ * Alternatively, you can can create a custom content by putting your html
26
+ * code between the <si-navbar-primary> tags. In this case you don't need this
27
+ * property (will be ignored if you set anyway).
28
+ */
29
+ readonly accountItems: import("@angular/core").InputSignal<MenuItem[] | undefined>;
30
+ /**
31
+ * Account settings name (`title`) and profile picture (`image` or `icon`)
32
+ */
33
+ readonly account: import("@angular/core").InputSignal<AccountItem | undefined>;
34
+ /**
35
+ * URL of the navbar brand.
36
+ */
37
+ readonly logoUrl: import("@angular/core").InputSignal<string | undefined>;
38
+ /**
39
+ * Title of the application.
40
+ */
41
+ readonly appTitle: import("@angular/core").InputSignal<string | undefined>;
42
+ /**
43
+ * Configurable home link that is used at the logo and app title.
44
+ * Use `undefined` to disable the link.
45
+ *
46
+ * @defaultValue
47
+ * ```
48
+ * { link: '/' }
49
+ * ```
50
+ */
51
+ readonly home: import("@angular/core").InputSignal<Link | undefined>;
52
+ /**
53
+ * title for the launchpad
54
+ *
55
+ * @defaultValue
56
+ * ```
57
+ * $localize`:@@SI_LAUNCHPAD.TITLE:Launchpad`
58
+ * ```
59
+ */
60
+ readonly appSwitcherTitle: import("@angular/core").InputSignal<import("@siemens/element-translate-ng/translate").TranslatableString>;
61
+ /**
62
+ * sub-title for the launchpad
63
+ *
64
+ * @defaultValue
65
+ * ```
66
+ * $localize`:@@SI_LAUNCHPAD.SUB_TITLE:Access all your apps`
67
+ * ```
68
+ */
69
+ readonly appSwitcherSubTitle: import("@angular/core").InputSignal<import("@siemens/element-translate-ng/translate").TranslatableString>;
70
+ /**
71
+ * Title or translate key for the favorite apps section.
72
+ *
73
+ * @defaultValue
74
+ * ```
75
+ * $localize`:@@SI_LAUNCHPAD.FAVORITE_APPS:Favorite apps`
76
+ * ```
77
+ */
78
+ readonly favoriteAppsTitle: import("@angular/core").InputSignal<import("@siemens/element-translate-ng/translate").TranslatableString>;
79
+ /**
80
+ * Title or translate key for the default apps section.
81
+ *
82
+ * @defaultValue
83
+ * ```
84
+ * $localize`:@@SI_LAUNCHPAD.DEFAULT_CATEGORY_TITLE:Apps`
85
+ * ```
86
+ */
87
+ readonly defaultAppsTitle: import("@angular/core").InputSignal<import("@siemens/element-translate-ng/translate").TranslatableString>;
88
+ /**
89
+ * Title or translate key for the show more apps button.
90
+ *
91
+ * @defaultValue
92
+ * ```
93
+ * $localize`:@@SI_LAUNCHPAD.SHOW_MORE:Show more`
94
+ * ```
95
+ */
96
+ readonly showMoreAppsTitle: import("@angular/core").InputSignal<import("@siemens/element-translate-ng/translate").TranslatableString>;
97
+ /**
98
+ * Title or translate key for the show less apps button.
99
+ *
100
+ * @defaultValue
101
+ * ```
102
+ * $localize`:@@SI_LAUNCHPAD.SHOW_LESS:Show less`
103
+ * ```
104
+ */
105
+ readonly showLessAppsTitle: import("@angular/core").InputSignal<import("@siemens/element-translate-ng/translate").TranslatableString>;
106
+ /**
107
+ * All app items shown in the launchpad. The launchpad will not be visible if the
108
+ * app items are undefined. The launchpad will be visible if the app items are an
109
+ * empty array.
110
+ */
111
+ readonly appItems: import("@angular/core").InputSignal<AppItem[] | undefined>;
112
+ /**
113
+ * Like `appItems` but with the addition of categories. If this is set, `appItems` is ignored.
114
+ */
115
+ readonly appCategoryItems: import("@angular/core").InputSignal<AppItemCategory[] | undefined>;
116
+ /**
117
+ * Allow the user to favorite apps which will then be displayed at the top.
118
+ *
119
+ * @defaultValue false
120
+ */
121
+ readonly appItemsFavorites: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
122
+ /**
123
+ * "all apps" link in the launchpad
124
+ */
125
+ readonly allAppsLink: import("@angular/core").InputSignal<MenuItem | undefined>;
126
+ /**
127
+ * Specifies whether the component should automatically be focused as soon as it is loaded.
128
+ *
129
+ * @defaultValue false
130
+ */
131
+ readonly focusOnLoad: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
132
+ /**
133
+ * Marks the navbar as primary navigation element. Needed for a11y (screen reader).
134
+ * Only one element should be primary. If multiple navbars are used, it's up to the
135
+ * user of the components to label them in the correct order.
136
+ *
137
+ * @defaultValue 'Primary'
138
+ */
139
+ readonly navAriaLabel: import("@angular/core").InputSignal<string>;
140
+ /**
141
+ * Text to close the launchpad. Needed for a11y.
142
+ *
143
+ * @defaultValue
144
+ * ```
145
+ * $localize`:@@SI_LAUNCHPAD.CLOSE:Close launchpad`
146
+ * ```
147
+ */
148
+ readonly closeAppSwitcherText: import("@angular/core").InputSignal<import("@siemens/element-translate-ng/translate").TranslatableString>;
149
+ /**
150
+ * Text for the launchpad icon. Needed for a11y.
151
+ *
152
+ * @defaultValue
153
+ * ```
154
+ * $localize`:@@SI_NAVBAR.OPEN_LAUNCHPAD:Open launchpad`
155
+ * ```
156
+ */
157
+ readonly openAppSwitcherText: import("@angular/core").InputSignal<import("@siemens/element-translate-ng/translate").TranslatableString>;
158
+ /**
159
+ * Text or translate key for the toggle navigation icon. Needed for a11y.
160
+ *
161
+ * @defaultValue
162
+ * ```
163
+ * $localize`:@@SI_NAVBAR.TOGGLE_NAVIGATION:Toggle navigation`
164
+ * ```
165
+ */
166
+ readonly toggleNavigationText: import("@angular/core").InputSignal<import("@siemens/element-translate-ng/translate").TranslatableString>;
167
+ /**
168
+ * Aria label for the main menu landmark
169
+ *
170
+ * @defaultValue 'Header main'
171
+ */
172
+ readonly ariaLabelMainMenu: import("@angular/core").InputSignal<string>;
173
+ /**
174
+ * Aria label for the secondary menu landmark
175
+ *
176
+ * @defaultValue 'Header secondary'
177
+ */
178
+ readonly ariaLabelSecondaryMenu: import("@angular/core").InputSignal<string>;
179
+ readonly appItemFavoriteChanged: import("@angular/core").OutputEmitterRef<[AppItem, boolean]>;
180
+ /** @internal */
181
+ readonly header: import("@angular/core").Signal<SiApplicationHeaderComponent>;
182
+ /** @internal */
183
+ readonly collapsibleActions: import("@angular/core").Signal<SiHeaderCollapsibleActionsComponent | undefined>;
184
+ /** @internal */
185
+ readonly navItemCount: import("@angular/core").WritableSignal<number>;
186
+ protected newAppItems?: App[] | AppCategory[];
187
+ protected active?: MenuItem;
188
+ /** @internal */
189
+ readonly inlineDropdown: import("rxjs").Observable<boolean>;
190
+ /** @internal */
191
+ onDropdownItemTriggered(): void;
192
+ /** @internal */
193
+ ngOnChanges(changes: SimpleChanges): void;
194
+ private convertApps;
195
+ protected onFavoriteChange({ app, favorite }: FavoriteChangeEvent): void;
196
+ static ɵfac: i0.ɵɵFactoryDeclaration<SiNavbarPrimaryComponent, never>;
197
+ static ɵcmp: i0.ɵɵComponentDeclaration<SiNavbarPrimaryComponent, "si-navbar-primary", never, { "primaryItems": { "alias": "primaryItems"; "required": false; "isSignal": true; }; "accountItems": { "alias": "accountItems"; "required": false; "isSignal": true; }; "account": { "alias": "account"; "required": false; "isSignal": true; }; "logoUrl": { "alias": "logoUrl"; "required": false; "isSignal": true; }; "appTitle": { "alias": "appTitle"; "required": false; "isSignal": true; }; "home": { "alias": "home"; "required": false; "isSignal": true; }; "appSwitcherTitle": { "alias": "appSwitcherTitle"; "required": false; "isSignal": true; }; "appSwitcherSubTitle": { "alias": "appSwitcherSubTitle"; "required": false; "isSignal": true; }; "favoriteAppsTitle": { "alias": "favoriteAppsTitle"; "required": false; "isSignal": true; }; "defaultAppsTitle": { "alias": "defaultAppsTitle"; "required": false; "isSignal": true; }; "showMoreAppsTitle": { "alias": "showMoreAppsTitle"; "required": false; "isSignal": true; }; "showLessAppsTitle": { "alias": "showLessAppsTitle"; "required": false; "isSignal": true; }; "appItems": { "alias": "appItems"; "required": false; "isSignal": true; }; "appCategoryItems": { "alias": "appCategoryItems"; "required": false; "isSignal": true; }; "appItemsFavorites": { "alias": "appItemsFavorites"; "required": false; "isSignal": true; }; "allAppsLink": { "alias": "allAppsLink"; "required": false; "isSignal": true; }; "focusOnLoad": { "alias": "focusOnLoad"; "required": false; "isSignal": true; }; "navAriaLabel": { "alias": "navAriaLabel"; "required": false; "isSignal": true; }; "closeAppSwitcherText": { "alias": "closeAppSwitcherText"; "required": false; "isSignal": true; }; "openAppSwitcherText": { "alias": "openAppSwitcherText"; "required": false; "isSignal": true; }; "toggleNavigationText": { "alias": "toggleNavigationText"; "required": false; "isSignal": true; }; "ariaLabelMainMenu": { "alias": "ariaLabelMainMenu"; "required": false; "isSignal": true; }; "ariaLabelSecondaryMenu": { "alias": "ariaLabelSecondaryMenu"; "required": false; "isSignal": true; }; }, { "appItemFavoriteChanged": "appItemFavoriteChanged"; }, never, ["*", "si-navbar-item[quickAction], element-navbar-item[quickAction='true']"], true, never>;
198
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Copyright Siemens 2016 - 2025.
3
+ * SPDX-License-Identifier: MIT
4
+ */
5
+ import { MenuItem } from '@siemens/element-ng/common';
6
+ import { TranslatableString } from '@siemens/element-translate-ng/translate';
7
+ /**
8
+ * The AppItem is used to show apps in the launchpad.
9
+ * @deprecated Use the new `si-application-header` instead.
10
+ */
11
+ export interface AppItem extends MenuItem {
12
+ /**
13
+ * If `true`, the app is marked as a favorite.
14
+ */
15
+ isFavorite?: boolean;
16
+ /**
17
+ * If `true`, the app is marked as an external application opening in a new browser tab.
18
+ */
19
+ isExternal?: boolean;
20
+ }
21
+ /**
22
+ * The AppItemCategory is used to show app categories in the launchpad.
23
+ * @deprecated Use the new `si-application-header` instead.
24
+ */
25
+ export interface AppItemCategory {
26
+ /**
27
+ * The name of the app category. Can be a translation key.
28
+ */
29
+ category?: TranslatableString;
30
+ /**
31
+ * The apps to show under this category.
32
+ */
33
+ items: AppItem[];
34
+ }
@@ -0,0 +1,9 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./si-navbar-item/si-navbar-item.component";
3
+ import * as i2 from "./si-navbar-primary/si-navbar-primary.component";
4
+ /** @deprecated Use the new `si-application-header` instead. */
5
+ export declare class SiNavbarModule {
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<SiNavbarModule, never>;
7
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SiNavbarModule, never, [typeof i1.SiNavbarItemComponent, typeof i2.SiNavbarPrimaryComponent], [typeof i1.SiNavbarItemComponent, typeof i2.SiNavbarPrimaryComponent]>;
8
+ static ɵinj: i0.ɵɵInjectorDeclaration<SiNavbarModule>;
9
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@siemens/element-ng",
3
3
  "description": "Element Angular component library, implementing the Siemens Design Language",
4
- "version": "47.1.0-next.3",
4
+ "version": "47.1.0",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -24,8 +24,8 @@
24
24
  "@angular/core": "19",
25
25
  "@angular/forms": "19",
26
26
  "@angular/router": "19",
27
- "@siemens/element-translate-ng": "47.1.0-next.3",
28
- "@siemens/element-theme": "47.1.0-next.3"
27
+ "@siemens/element-translate-ng": "47.1.0",
28
+ "@siemens/element-theme": "47.1.0"
29
29
  },
30
30
  "peerDependenciesMeta": {
31
31
  "@angular/animations": {
@@ -66,6 +66,10 @@
66
66
  "types": "./link/index.d.ts",
67
67
  "default": "./fesm2022/siemens-element-ng-link.mjs"
68
68
  },
69
+ "./navbar": {
70
+ "types": "./navbar/index.d.ts",
71
+ "default": "./fesm2022/siemens-element-ng-navbar.mjs"
72
+ },
69
73
  "./resize-observer": {
70
74
  "types": "./resize-observer/index.d.ts",
71
75
  "default": "./fesm2022/siemens-element-ng-resize-observer.mjs"
@@ -0,0 +1,15 @@
1
+ {
2
+ "SI_APPLICATION_HEADER.LAUNCHPAD": "Launchpad",
3
+ "SI_APPLICATION_HEADER.TOGGLE_ACTIONS": "Toggle actions",
4
+ "SI_APPLICATION_HEADER.TOGGLE_NAVIGATION": "Toggle navigation",
5
+ "SI_LAUNCHPAD.CLOSE": "Close launchpad",
6
+ "SI_LAUNCHPAD.DEFAULT_CATEGORY_TITLE": "Apps",
7
+ "SI_LAUNCHPAD.FAVORITE_APPS": "Favorite apps",
8
+ "SI_LAUNCHPAD.SHOW_LESS": "Show less",
9
+ "SI_LAUNCHPAD.SHOW_MORE": "Show more",
10
+ "SI_LAUNCHPAD.SUBTITLE": "Access all your apps",
11
+ "SI_LAUNCHPAD.SUB_TITLE": "Access all your apps",
12
+ "SI_LAUNCHPAD.TITLE": "Launchpad",
13
+ "SI_NAVBAR.OPEN_LAUNCHPAD": "Open launchpad",
14
+ "SI_NAVBAR.TOGGLE_NAVIGATION": "Toggle navigation"
15
+ }
@@ -3,9 +3,13 @@ export interface SiTranslatableKeys {
3
3
  'SI_APPLICATION_HEADER.TOGGLE_ACTIONS'?: string;
4
4
  'SI_APPLICATION_HEADER.TOGGLE_NAVIGATION'?: string;
5
5
  'SI_LAUNCHPAD.CLOSE'?: string;
6
+ 'SI_LAUNCHPAD.DEFAULT_CATEGORY_TITLE'?: string;
6
7
  'SI_LAUNCHPAD.FAVORITE_APPS'?: string;
7
8
  'SI_LAUNCHPAD.SHOW_LESS'?: string;
8
9
  'SI_LAUNCHPAD.SHOW_MORE'?: string;
9
10
  'SI_LAUNCHPAD.SUBTITLE'?: string;
11
+ 'SI_LAUNCHPAD.SUB_TITLE'?: string;
10
12
  'SI_LAUNCHPAD.TITLE'?: string;
13
+ 'SI_NAVBAR.OPEN_LAUNCHPAD'?: string;
14
+ 'SI_NAVBAR.TOGGLE_NAVIGATION'?: string;
11
15
  }