@siemens/element-ng 49.11.0 → 49.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/carousel/package.json +4 -0
- package/fesm2022/siemens-element-ng-ag-grid.mjs +6 -5
- package/fesm2022/siemens-element-ng-ag-grid.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-application-header.mjs +51 -32
- package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-autocomplete.mjs +9 -13
- package/fesm2022/siemens-element-ng-autocomplete.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-breadcrumb-router.mjs +3 -3
- package/fesm2022/siemens-element-ng-breadcrumb-router.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-breadcrumb.mjs +3 -3
- package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-card.mjs +2 -2
- package/fesm2022/siemens-element-ng-card.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-carousel.mjs +541 -0
- package/fesm2022/siemens-element-ng-carousel.mjs.map +1 -0
- package/fesm2022/siemens-element-ng-chat-messages.mjs +18 -21
- package/fesm2022/siemens-element-ng-chat-messages.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-content-action-bar.mjs +2 -2
- package/fesm2022/siemens-element-ng-content-action-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-dashboard.mjs +34 -35
- package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-date-range-filter.mjs +10 -8
- package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-datepicker.mjs +10 -9
- package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-electron-titlebar.mjs +3 -3
- package/fesm2022/siemens-element-ng-electron-titlebar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-empty-state.mjs +2 -2
- package/fesm2022/siemens-element-ng-empty-state.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-file-uploader.mjs +49 -47
- package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filter-bar.mjs +5 -5
- package/fesm2022/siemens-element-ng-filter-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filtered-search.mjs +6 -5
- package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-footer.mjs +3 -3
- package/fesm2022/siemens-element-ng-footer.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-form.mjs +28 -49
- package/fesm2022/siemens-element-ng-form.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-formly.mjs +24 -23
- package/fesm2022/siemens-element-ng-formly.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-header-dropdown.mjs +37 -21
- package/fesm2022/siemens-element-ng-header-dropdown.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-help-button.mjs +3 -3
- package/fesm2022/siemens-element-ng-help-button.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-inline-notification.mjs +3 -3
- package/fesm2022/siemens-element-ng-inline-notification.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-ip-input.mjs +1 -1
- package/fesm2022/siemens-element-ng-ip-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-language-switcher.mjs +3 -3
- package/fesm2022/siemens-element-ng-language-switcher.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-markdown-renderer.mjs +4 -3
- package/fesm2022/siemens-element-ng-markdown-renderer.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-menu.mjs +2 -2
- package/fesm2022/siemens-element-ng-menu.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs +8 -7
- package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-navbar-vertical.mjs +13 -12
- package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-navbar.mjs +6 -8
- package/fesm2022/siemens-element-ng-navbar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-notification-item.mjs +3 -3
- package/fesm2022/siemens-element-ng-notification-item.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-pagination.mjs +4 -1
- package/fesm2022/siemens-element-ng-pagination.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-password-toggle.mjs +3 -3
- package/fesm2022/siemens-element-ng-password-toggle.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-phone-number.mjs +63 -42
- package/fesm2022/siemens-element-ng-phone-number.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-pills-input.mjs +4 -4
- package/fesm2022/siemens-element-ng-pills-input.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-popover-legacy.mjs +3 -3
- package/fesm2022/siemens-element-ng-popover-legacy.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-popover.mjs +3 -3
- package/fesm2022/siemens-element-ng-popover.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-result-details-list.mjs +3 -3
- package/fesm2022/siemens-element-ng-result-details-list.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-side-panel.mjs +5 -5
- package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-sort-bar.mjs +3 -3
- package/fesm2022/siemens-element-ng-sort-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-split.mjs +3 -3
- package/fesm2022/siemens-element-ng-split.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-status-bar.mjs +3 -3
- package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tabs.mjs +33 -6
- package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-threshold.mjs +5 -5
- package/fesm2022/siemens-element-ng-threshold.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-toast-notification.mjs +3 -3
- package/fesm2022/siemens-element-ng-toast-notification.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tooltip.mjs +180 -77
- package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tree-view.mjs +6 -6
- package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
- package/package.json +12 -8
- package/template-i18n.json +7 -0
- package/types/siemens-element-ng-application-header.d.ts +15 -8
- package/types/siemens-element-ng-autocomplete.d.ts +19 -19
- package/types/siemens-element-ng-carousel.d.ts +209 -0
- package/types/siemens-element-ng-chat-messages.d.ts +1 -2
- package/types/siemens-element-ng-dashboard.d.ts +4 -4
- package/types/siemens-element-ng-date-range-filter.d.ts +1 -1
- package/types/siemens-element-ng-file-uploader.d.ts +6 -8
- package/types/siemens-element-ng-form.d.ts +1 -3
- package/types/siemens-element-ng-header-dropdown.d.ts +8 -3
- package/types/siemens-element-ng-navbar.d.ts +1 -2
- package/types/siemens-element-ng-phone-number.d.ts +2 -2
- package/types/siemens-element-ng-tabs.d.ts +4 -0
- package/types/siemens-element-ng-tooltip.d.ts +10 -26
- package/types/siemens-element-ng-translate.d.ts +7 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NgTemplateOutlet } from '@angular/common';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { input, booleanAttribute, output, viewChild, signal, Component, inject, NgModule } from '@angular/core';
|
|
3
|
+
import { input, booleanAttribute, output, viewChild, signal, computed, ChangeDetectionStrategy, Component, inject, NgModule } from '@angular/core';
|
|
4
4
|
import { elementDown2 } from '@siemens/element-icons';
|
|
5
5
|
import { SiHeaderDropdownComponent, SiHeaderDropdownTriggerDirective, SiHeaderDropdownItemsFactoryComponent, SI_HEADER_WITH_DROPDOWNS } from '@siemens/element-ng/header-dropdown';
|
|
6
6
|
import { addIcons, SiIconComponent } from '@siemens/element-ng/icon';
|
|
@@ -8,7 +8,6 @@ import { SiLinkDirective } from '@siemens/element-ng/link';
|
|
|
8
8
|
import { t, SiTranslatePipe } from '@siemens/element-translate-ng/translate';
|
|
9
9
|
import { A11yModule } from '@angular/cdk/a11y';
|
|
10
10
|
import { SiApplicationHeaderComponent, SiHeaderCollapsibleActionsComponent, SiLaunchpadFactoryComponent, SiHeaderAccountItemComponent, SiHeaderNavigationItemComponent, SiHeaderBrandDirective, SiHeaderNavigationComponent, SiHeaderActionsDirective, SiHeaderLogoDirective } from '@siemens/element-ng/application-header';
|
|
11
|
-
import { defer } from 'rxjs';
|
|
12
11
|
|
|
13
12
|
/**
|
|
14
13
|
* Copyright (c) Siemens 2016 - 2026
|
|
@@ -194,8 +193,7 @@ class SiNavbarPrimaryComponent {
|
|
|
194
193
|
newAppItems;
|
|
195
194
|
active;
|
|
196
195
|
/** @internal */
|
|
197
|
-
|
|
198
|
-
inlineDropdown = defer(() => this.header().inlineDropdown);
|
|
196
|
+
inlineDropdown = computed(() => this.header().inlineDropdown(), ...(ngDevMode ? [{ debugName: "inlineDropdown" }] : []));
|
|
199
197
|
/** @internal */
|
|
200
198
|
onDropdownItemTriggered() {
|
|
201
199
|
this.header().onDropdownItemTriggered();
|
|
@@ -257,7 +255,7 @@ class SiNavbarPrimaryComponent {
|
|
|
257
255
|
this.appItemFavoriteChanged.emit([app._src, favorite]);
|
|
258
256
|
}
|
|
259
257
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarPrimaryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
260
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", 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 <h1 class=\"application-name\">{{ appTitle() }}</h1>\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-h5 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: "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]" }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }] });
|
|
258
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", 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 <h1 class=\"application-name\">{{ appTitle() }}</h1>\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-h5 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: "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]" }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default });
|
|
261
259
|
}
|
|
262
260
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarPrimaryComponent, decorators: [{
|
|
263
261
|
type: Component,
|
|
@@ -278,7 +276,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
278
276
|
SiHeaderActionsDirective,
|
|
279
277
|
SiHeaderCollapsibleActionsComponent,
|
|
280
278
|
SiHeaderLogoDirective
|
|
281
|
-
], 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 <h1 class=\"application-name\">{{ appTitle() }}</h1>\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-h5 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"] }]
|
|
279
|
+
], providers: [{ provide: SI_HEADER_WITH_DROPDOWNS, useExisting: SiNavbarPrimaryComponent }], changeDetection: ChangeDetectionStrategy.Default, 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 <h1 class=\"application-name\">{{ appTitle() }}</h1>\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-h5 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"] }]
|
|
282
280
|
}], propDecorators: { primaryItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "primaryItems", required: false }] }], accountItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "accountItems", required: false }] }], account: [{ type: i0.Input, args: [{ isSignal: true, alias: "account", required: false }] }], logoUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "logoUrl", required: false }] }], appTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "appTitle", required: false }] }], home: [{ type: i0.Input, args: [{ isSignal: true, alias: "home", required: false }] }], appSwitcherTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "appSwitcherTitle", required: false }] }], appSwitcherSubTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "appSwitcherSubTitle", required: false }] }], favoriteAppsTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "favoriteAppsTitle", required: false }] }], defaultAppsTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultAppsTitle", required: false }] }], showMoreAppsTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "showMoreAppsTitle", required: false }] }], showLessAppsTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "showLessAppsTitle", required: false }] }], appItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "appItems", required: false }] }], appCategoryItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "appCategoryItems", required: false }] }], appItemsFavorites: [{ type: i0.Input, args: [{ isSignal: true, alias: "appItemsFavorites", required: false }] }], allAppsLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "allAppsLink", required: false }] }], focusOnLoad: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusOnLoad", required: false }] }], navAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "navAriaLabel", required: false }] }], closeAppSwitcherText: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeAppSwitcherText", required: false }] }], openAppSwitcherText: [{ type: i0.Input, args: [{ isSignal: true, alias: "openAppSwitcherText", required: false }] }], toggleNavigationText: [{ type: i0.Input, args: [{ isSignal: true, alias: "toggleNavigationText", required: false }] }], ariaLabelMainMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabelMainMenu", required: false }] }], ariaLabelSecondaryMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabelSecondaryMenu", required: false }] }], appItemFavoriteChanged: [{ type: i0.Output, args: ["appItemFavoriteChanged"] }], header: [{ type: i0.ViewChild, args: [i0.forwardRef(() => SiApplicationHeaderComponent), { isSignal: true }] }], collapsibleActions: [{ type: i0.ViewChild, args: [i0.forwardRef(() => SiHeaderCollapsibleActionsComponent), { isSignal: true }] }] } });
|
|
283
281
|
|
|
284
282
|
/**
|
|
@@ -331,7 +329,7 @@ class SiNavbarItemComponent {
|
|
|
331
329
|
return !this.navbar.collapsibleActions()?.mobileExpanded();
|
|
332
330
|
}
|
|
333
331
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
334
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", 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 <si-icon class=\"dropdown-caret\" [icon]=\"icons.elementDown2\" />\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 @let icon = item().icon;\n @if (icon) {\n <si-icon class=\"icon\" [icon]=\"icon\" />\n }\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: "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"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }] });
|
|
332
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", 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 <si-icon class=\"dropdown-caret\" [icon]=\"icons.elementDown2\" />\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 @let icon = item().icon;\n @if (icon) {\n <si-icon class=\"icon\" [icon]=\"icon\" />\n }\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: "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"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default });
|
|
335
333
|
}
|
|
336
334
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarItemComponent, decorators: [{
|
|
337
335
|
type: Component,
|
|
@@ -343,7 +341,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
343
341
|
SiHeaderDropdownItemsFactoryComponent,
|
|
344
342
|
SiHeaderDropdownTriggerDirective,
|
|
345
343
|
SiIconComponent
|
|
346
|
-
], 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 <si-icon class=\"dropdown-caret\" [icon]=\"icons.elementDown2\" />\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 @let icon = item().icon;\n @if (icon) {\n <si-icon class=\"icon\" [icon]=\"icon\" />\n }\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" }]
|
|
344
|
+
], changeDetection: ChangeDetectionStrategy.Default, 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 <si-icon class=\"dropdown-caret\" [icon]=\"icons.elementDown2\" />\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 @let icon = item().icon;\n @if (icon) {\n <si-icon class=\"icon\" [icon]=\"icon\" />\n }\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" }]
|
|
347
345
|
}], propDecorators: { item: [{ type: i0.Input, args: [{ isSignal: true, alias: "item", required: true }] }], quickAction: [{ type: i0.Input, args: [{ isSignal: true, alias: "quickAction", required: false }] }], dropdownTrigger: [{ type: i0.ViewChild, args: [i0.forwardRef(() => SiHeaderDropdownTriggerDirective), { isSignal: true }] }] } });
|
|
348
346
|
|
|
349
347
|
/**
|
|
@@ -1 +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 (c) Siemens 2016 - 2026\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 { SiTranslatePipe, t } 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 imports: [\n A11yModule,\n NgTemplateOutlet,\n SiLinkDirective,\n SiTranslatePipe,\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 templateUrl: './si-navbar-primary.component.html',\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 * t(() => $localize`:@@SI_LAUNCHPAD.TITLE:Switch applications`)\n * ```\n */\n readonly appSwitcherTitle = input(t(() => $localize`:@@SI_LAUNCHPAD.TITLE:Switch applications`));\n\n /**\n * sub-title for the launchpad\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LAUNCHPAD.SUB_TITLE:Access all your apps`)\n * ```\n */\n readonly appSwitcherSubTitle = input(\n t(() => $localize`:@@SI_LAUNCHPAD.SUB_TITLE:Access all your apps`)\n );\n\n /**\n * Title or translate key for the favorite apps section.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LAUNCHPAD.FAVORITE_APPS:Favorites`)\n * ```\n */\n readonly favoriteAppsTitle = input(t(() => $localize`:@@SI_LAUNCHPAD.FAVORITE_APPS:Favorites`));\n\n /**\n * Title or translate key for the default apps section.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LAUNCHPAD.DEFAULT_CATEGORY_TITLE:Apps`)\n * ```\n */\n readonly defaultAppsTitle = input(\n t(() => $localize`:@@SI_LAUNCHPAD.DEFAULT_CATEGORY_TITLE:Apps`)\n );\n\n /**\n * Title or translate key for the show more apps button.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LAUNCHPAD.SHOW_MORE:Show more`)\n * ```\n */\n readonly showMoreAppsTitle = input(t(() => $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 * t(() => $localize`:@@SI_LAUNCHPAD.SHOW_LESS:Show less`)\n * ```\n */\n readonly showLessAppsTitle = input(t(() => $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 * t(() => $localize`:@@SI_LAUNCHPAD.CLOSE:Close launchpad`)\n * ```\n */\n readonly closeAppSwitcherText = input(t(() => $localize`:@@SI_LAUNCHPAD.CLOSE:Close launchpad`));\n\n /**\n * Text for the launchpad icon. Needed for a11y.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_NAVBAR.OPEN_LAUNCHPAD:Open launchpad`)\n * ```\n */\n readonly openAppSwitcherText = input(\n t(() => $localize`:@@SI_NAVBAR.OPEN_LAUNCHPAD:Open launchpad`)\n );\n\n /**\n * Text or translate key for the toggle navigation icon. Needed for a11y.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_NAVBAR.TOGGLE_NAVIGATION:Toggle navigation`)\n * ```\n */\n readonly toggleNavigationText = input(\n t(() => $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<this>): 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 <h1 class=\"application-name\">{{ appTitle() }}</h1>\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-h5 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 (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { 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 { elementDown2 } from '@siemens/element-icons';\nimport { MenuItem } from '@siemens/element-ng/common';\nimport {\n SiHeaderDropdownComponent,\n SiHeaderDropdownItemsFactoryComponent,\n SiHeaderDropdownTriggerDirective\n} from '@siemens/element-ng/header-dropdown';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiTranslatePipe } 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 imports: [\n SiLinkDirective,\n SiTranslatePipe,\n NgTemplateOutlet,\n SiHeaderDropdownComponent,\n SiHeaderDropdownItemsFactoryComponent,\n SiHeaderDropdownTriggerDirective,\n SiIconComponent\n ],\n templateUrl: './si-navbar-item.component.html',\n host: { class: 'd-contents' }\n})\nexport class SiNavbarItemComponent implements OnInit, DoCheck, OnDestroy {\n protected readonly icons = addIcons({ elementDown2 });\n\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 <si-icon class=\"dropdown-caret\" [icon]=\"icons.elementDown2\" />\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 @let icon = item().icon;\n @if (icon) {\n <si-icon class=\"icon\" [icon]=\"icon\" />\n }\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 (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-navbar-item.component';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-navbar-primary.component';\nexport * from './si-navbar-primary.model';\n","/**\n * Copyright (c) Siemens 2016 - 2026\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 (c) Siemens 2016 - 2026\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
|
+
{"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 (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\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 { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\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 imports: [\n A11yModule,\n NgTemplateOutlet,\n SiLinkDirective,\n SiTranslatePipe,\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 templateUrl: './si-navbar-primary.component.html',\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 changeDetection: ChangeDetectionStrategy.Default\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 * t(() => $localize`:@@SI_LAUNCHPAD.TITLE:Switch applications`)\n * ```\n */\n readonly appSwitcherTitle = input(t(() => $localize`:@@SI_LAUNCHPAD.TITLE:Switch applications`));\n\n /**\n * sub-title for the launchpad\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LAUNCHPAD.SUB_TITLE:Access all your apps`)\n * ```\n */\n readonly appSwitcherSubTitle = input(\n t(() => $localize`:@@SI_LAUNCHPAD.SUB_TITLE:Access all your apps`)\n );\n\n /**\n * Title or translate key for the favorite apps section.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LAUNCHPAD.FAVORITE_APPS:Favorites`)\n * ```\n */\n readonly favoriteAppsTitle = input(t(() => $localize`:@@SI_LAUNCHPAD.FAVORITE_APPS:Favorites`));\n\n /**\n * Title or translate key for the default apps section.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LAUNCHPAD.DEFAULT_CATEGORY_TITLE:Apps`)\n * ```\n */\n readonly defaultAppsTitle = input(\n t(() => $localize`:@@SI_LAUNCHPAD.DEFAULT_CATEGORY_TITLE:Apps`)\n );\n\n /**\n * Title or translate key for the show more apps button.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LAUNCHPAD.SHOW_MORE:Show more`)\n * ```\n */\n readonly showMoreAppsTitle = input(t(() => $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 * t(() => $localize`:@@SI_LAUNCHPAD.SHOW_LESS:Show less`)\n * ```\n */\n readonly showLessAppsTitle = input(t(() => $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 * t(() => $localize`:@@SI_LAUNCHPAD.CLOSE:Close launchpad`)\n * ```\n */\n readonly closeAppSwitcherText = input(t(() => $localize`:@@SI_LAUNCHPAD.CLOSE:Close launchpad`));\n\n /**\n * Text for the launchpad icon. Needed for a11y.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_NAVBAR.OPEN_LAUNCHPAD:Open launchpad`)\n * ```\n */\n readonly openAppSwitcherText = input(\n t(() => $localize`:@@SI_NAVBAR.OPEN_LAUNCHPAD:Open launchpad`)\n );\n\n /**\n * Text or translate key for the toggle navigation icon. Needed for a11y.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_NAVBAR.TOGGLE_NAVIGATION:Toggle navigation`)\n * ```\n */\n readonly toggleNavigationText = input(\n t(() => $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 readonly inlineDropdown = computed(() => this.header().inlineDropdown());\n\n /** @internal */\n onDropdownItemTriggered(): void {\n this.header().onDropdownItemTriggered();\n }\n\n /** @internal */\n ngOnChanges(changes: SimpleChanges<this>): 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 <h1 class=\"application-name\">{{ appTitle() }}</h1>\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-h5 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 (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n DoCheck,\n inject,\n input,\n OnDestroy,\n OnInit,\n viewChild\n} from '@angular/core';\nimport { elementDown2 } from '@siemens/element-icons';\nimport { MenuItem } from '@siemens/element-ng/common';\nimport {\n SiHeaderDropdownComponent,\n SiHeaderDropdownItemsFactoryComponent,\n SiHeaderDropdownTriggerDirective\n} from '@siemens/element-ng/header-dropdown';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiTranslatePipe } 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 imports: [\n SiLinkDirective,\n SiTranslatePipe,\n NgTemplateOutlet,\n SiHeaderDropdownComponent,\n SiHeaderDropdownItemsFactoryComponent,\n SiHeaderDropdownTriggerDirective,\n SiIconComponent\n ],\n templateUrl: './si-navbar-item.component.html',\n changeDetection: ChangeDetectionStrategy.Default,\n host: { class: 'd-contents' }\n})\nexport class SiNavbarItemComponent implements OnInit, DoCheck, OnDestroy {\n protected readonly icons = addIcons({ elementDown2 });\n\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 <si-icon class=\"dropdown-caret\" [icon]=\"icons.elementDown2\" />\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 @let icon = item().icon;\n @if (icon) {\n <si-icon class=\"icon\" [icon]=\"icon\" />\n }\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 (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-navbar-item.component';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-navbar-primary.component';\nexport * from './si-navbar-primary.model';\n","/**\n * Copyright (c) Siemens 2016 - 2026\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 (c) Siemens 2016 - 2026\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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"}
|
|
@@ -2,7 +2,7 @@ import { CdkMenuTrigger } from '@angular/cdk/menu';
|
|
|
2
2
|
import * as i2 from '@angular/common';
|
|
3
3
|
import { CommonModule } from '@angular/common';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import { input, booleanAttribute, inject, Component } from '@angular/core';
|
|
5
|
+
import { input, booleanAttribute, inject, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
6
6
|
import * as i1 from '@angular/router';
|
|
7
7
|
import { ActivatedRoute, RouterModule } from '@angular/router';
|
|
8
8
|
import { elementOptionsVertical } from '@siemens/element-icons';
|
|
@@ -54,7 +54,7 @@ class SiNotificationItemComponent {
|
|
|
54
54
|
primaryAction = input(...(ngDevMode ? [undefined, { debugName: "primaryAction" }] : []));
|
|
55
55
|
activatedRoute = inject(ActivatedRoute, { optional: true });
|
|
56
56
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNotificationItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
57
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiNotificationItemComponent, isStandalone: true, selector: "si-notification-item", inputs: { timeStamp: { classPropertyName: "timeStamp", publicName: "timeStamp", isSignal: true, isRequired: true, transformFunction: null }, heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: true, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, unread: { classPropertyName: "unread", publicName: "unread", isSignal: true, isRequired: false, transformFunction: null }, itemLink: { classPropertyName: "itemLink", publicName: "itemLink", isSignal: true, isRequired: false, transformFunction: null }, quickActions: { classPropertyName: "quickActions", publicName: "quickActions", isSignal: true, isRequired: false, transformFunction: null }, primaryAction: { classPropertyName: "primaryAction", publicName: "primaryAction", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"notification-item px-6 py-5\">\n <div class=\"notification-item-indicator\">\n <div>\n @if (unread()) {\n <span class=\"dot\"></span>\n }\n <ng-content select=\"si-avatar,si-circle-status,si-icon,si-status-icon\" />\n </div>\n </div>\n\n <div class=\"notification-item-content\">\n @let itemLinkValue = itemLink();\n @if (itemLinkValue) {\n @switch (itemLinkValue.type) {\n @case ('link') {\n <a\n [href]=\"itemLinkValue.href\"\n [target]=\"itemLinkValue.target\"\n [attr.aria-label]=\"heading() + ' link'\"\n >\n <ng-container *ngTemplateOutlet=\"content\" />\n </a>\n }\n @case ('router-link') {\n <a\n [routerLink]=\"itemLinkValue.routerLink\"\n [queryParams]=\"itemLinkValue.extras?.queryParams\"\n [queryParamsHandling]=\"itemLinkValue.extras?.queryParamsHandling\"\n [fragment]=\"itemLinkValue.extras?.fragment\"\n [state]=\"itemLinkValue.extras?.state\"\n [relativeTo]=\"itemLinkValue.extras?.relativeTo ?? activatedRoute\"\n [preserveFragment]=\"itemLinkValue.extras?.preserveFragment\"\n [skipLocationChange]=\"itemLinkValue.extras?.skipLocationChange\"\n [replaceUrl]=\"itemLinkValue.extras?.replaceUrl\"\n [attr.aria-label]=\"heading() + ' link'\"\n >\n <ng-container *ngTemplateOutlet=\"content\" />\n </a>\n }\n }\n } @else {\n <ng-container *ngTemplateOutlet=\"content\" />\n }\n </div>\n\n @let primaryActionValue = primaryAction();\n @if (primaryActionValue) {\n <div class=\"notification-item-primary-action\">\n @if (primaryActionValue.type === 'menu') {\n <ng-container *ngTemplateOutlet=\"menu; context: { $implicit: primaryActionValue }\" />\n } @else if (primaryActionValue.type === 'action-button') {\n <button\n type=\"button\"\n class=\"btn btn-tertiary\"\n (click)=\"primaryActionValue.action(primaryActionValue)\"\n >{{ primaryActionValue.label | translate }}</button\n >\n } @else {\n <ng-container *ngTemplateOutlet=\"action; context: { $implicit: primaryActionValue }\" />\n }\n </div>\n } @else {\n <div class=\"notification-item-primary-action\">\n <ng-content select=\"[action]\" />\n </div>\n }\n\n @let quickActionsValue = quickActions();\n @if (quickActionsValue) {\n <div class=\"notification-item-quick-actions\">\n @for (quickAction of quickActionsValue; track $index) {\n <ng-container *ngTemplateOutlet=\"action; context: { $implicit: quickAction }\" />\n }\n </div>\n } @else {\n <div class=\"notification-item-quick-actions\">\n <ng-content select=\"[quick-actions]\" />\n </div>\n }\n</div>\n\n<ng-template #action let-action>\n @switch (action.type) {\n @case ('action-circle-button') {\n <ng-container *ngTemplateOutlet=\"actionButton; context: { $implicit: action }\" />\n }\n @case ('action-icon-button') {\n <ng-container *ngTemplateOutlet=\"actionButton; context: { $implicit: action }\" />\n }\n @case ('router-link') {\n <ng-container *ngTemplateOutlet=\"routerLink; context: { $implicit: action }\" />\n }\n @case ('link') {\n <ng-container *ngTemplateOutlet=\"link; context: { $implicit: action }\" />\n }\n }\n</ng-template>\n\n<ng-template #content>\n <div class=\"d-flex flex-column gap-3 text-body\">\n <span class=\"si-body text-secondary\">{{ timeStamp() | translate }}</span>\n <span [class.si-h5-bold]=\"unread()\" [class.si-h5]=\"!unread()\">{{ heading() | translate }}</span>\n @if (description()) {\n <span class=\"si-body\">{{ description() | translate }}</span>\n }\n <div class=\"si-body\">\n <ng-content select=\"[description]\" />\n </div>\n </div>\n</ng-template>\n\n<ng-template #actionButton let-action>\n <button\n type=\"button\"\n class=\"btn btn-tertiary-ghost btn-icon\"\n [attr.aria-label]=\"action.ariaLabel\"\n (click)=\"action.action(action)\"\n >\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n </button>\n</ng-template>\n\n<ng-template #routerLink let-action>\n <a\n class=\"btn btn-tertiary-ghost p-2 btn-icon\"\n [routerLink]=\"action.routerLink\"\n [queryParams]=\"action.extras?.queryParams\"\n [queryParamsHandling]=\"action.extras?.queryParamsHandling\"\n [fragment]=\"action.extras?.fragment\"\n [state]=\"action.extras?.state\"\n [relativeTo]=\"action.extras?.relativeTo ?? activatedRoute\"\n [preserveFragment]=\"action.extras?.preserveFragment\"\n [skipLocationChange]=\"action.extras?.skipLocationChange\"\n [replaceUrl]=\"action.extras?.replaceUrl\"\n [attr.aria-label]=\"action.ariaLabel\"\n >\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n </a>\n</ng-template>\n\n<ng-template #link let-action>\n <a\n class=\"btn btn-tertiary-ghost p-2 btn-icon\"\n [href]=\"action.href\"\n [target]=\"action.target\"\n [attr.aria-label]=\"action.ariaLabel\"\n >\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n </a>\n</ng-template>\n\n<ng-template #menu let-action>\n <button\n type=\"button\"\n class=\"btn btn-tertiary-ghost btn-icon\"\n [attr.aria-label]=\"heading() + ' dropdown'\"\n [cdkMenuTriggerFor]=\"actionMenu\"\n >\n <si-icon [icon]=\"icons.elementOptionsVertical\" />\n </button>\n\n <ng-template #actionMenu>\n <si-menu-factory [items]=\"action.menuItems\" />\n </ng-template>\n</ng-template>\n", styles: ["div:empty{display:none!important}div:has(.notification-item-content a):hover{background-color:var(--element-base-1-hover)}.notification-item{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto auto}.notification-item a{text-decoration:none}.notification-item a:focus-visible div{outline:var(--element-button-focus-width) solid var(--element-focus-default);outline-offset:var(--element-button-focus-overlay-width)}.notification-item-indicator{grid-column:1;grid-row:1}.notification-item-indicator div{position:relative;display:flex;flex-direction:row;justify-content:center;align-items:center}.notification-item-indicator:has(si-avatar){margin-inline-end:16px}.notification-item-indicator:has(si-circle-status){margin-inline-end:4px}.notification-item-indicator:not(:has(si-avatar,si-circle-status)):has(si-icon){margin-inline-end:8px;margin-block-start:calc(1lh + 4px)}.notification-item-indicator:not(:has(si-avatar,si-circle-status,si-icon)){inline-size:0;margin-block-start:calc(1lh + 6px)}.notification-item-indicator:not(:has(si-avatar,si-circle-status,si-icon)) div{block-size:1rem}.notification-item-content{grid-column:2;grid-row:1;flex-grow:1}.notification-item-primary-action{grid-column:3;grid-row:1/span 2;display:flex;align-items:center;margin-inline-start:8px}.notification-item-quick-actions{grid-column:2;grid-row:2;display:flex;gap:8px;margin-block-start:8px}.dot{display:block;position:absolute;block-size:6px;inline-size:6px;border-radius:50%;background-color:var(--element-ui-1);inset-inline-start:-10px}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SiMenuFactoryComponent, selector: "si-menu-factory", inputs: ["items", "actionParam"] }, { kind: "directive", type: CdkMenuTrigger, selector: "[cdkMenuTriggerFor]", inputs: ["cdkMenuTriggerFor", "cdkMenuPosition", "cdkMenuTriggerData", "cdkMenuTriggerTransformOriginOn"], outputs: ["cdkMenuOpened", "cdkMenuClosed"], exportAs: ["cdkMenuTriggerFor"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }] });
|
|
57
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiNotificationItemComponent, isStandalone: true, selector: "si-notification-item", inputs: { timeStamp: { classPropertyName: "timeStamp", publicName: "timeStamp", isSignal: true, isRequired: true, transformFunction: null }, heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: true, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, unread: { classPropertyName: "unread", publicName: "unread", isSignal: true, isRequired: false, transformFunction: null }, itemLink: { classPropertyName: "itemLink", publicName: "itemLink", isSignal: true, isRequired: false, transformFunction: null }, quickActions: { classPropertyName: "quickActions", publicName: "quickActions", isSignal: true, isRequired: false, transformFunction: null }, primaryAction: { classPropertyName: "primaryAction", publicName: "primaryAction", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"notification-item px-6 py-5\">\n <div class=\"notification-item-indicator\">\n <div>\n @if (unread()) {\n <span class=\"dot\"></span>\n }\n <ng-content select=\"si-avatar,si-circle-status,si-icon,si-status-icon\" />\n </div>\n </div>\n\n <div class=\"notification-item-content\">\n @let itemLinkValue = itemLink();\n @if (itemLinkValue) {\n @switch (itemLinkValue.type) {\n @case ('link') {\n <a\n [href]=\"itemLinkValue.href\"\n [target]=\"itemLinkValue.target\"\n [attr.aria-label]=\"heading() + ' link'\"\n >\n <ng-container *ngTemplateOutlet=\"content\" />\n </a>\n }\n @case ('router-link') {\n <a\n [routerLink]=\"itemLinkValue.routerLink\"\n [queryParams]=\"itemLinkValue.extras?.queryParams\"\n [queryParamsHandling]=\"itemLinkValue.extras?.queryParamsHandling\"\n [fragment]=\"itemLinkValue.extras?.fragment\"\n [state]=\"itemLinkValue.extras?.state\"\n [relativeTo]=\"itemLinkValue.extras?.relativeTo ?? activatedRoute\"\n [preserveFragment]=\"itemLinkValue.extras?.preserveFragment\"\n [skipLocationChange]=\"itemLinkValue.extras?.skipLocationChange\"\n [replaceUrl]=\"itemLinkValue.extras?.replaceUrl\"\n [attr.aria-label]=\"heading() + ' link'\"\n >\n <ng-container *ngTemplateOutlet=\"content\" />\n </a>\n }\n }\n } @else {\n <ng-container *ngTemplateOutlet=\"content\" />\n }\n </div>\n\n @let primaryActionValue = primaryAction();\n @if (primaryActionValue) {\n <div class=\"notification-item-primary-action\">\n @if (primaryActionValue.type === 'menu') {\n <ng-container *ngTemplateOutlet=\"menu; context: { $implicit: primaryActionValue }\" />\n } @else if (primaryActionValue.type === 'action-button') {\n <button\n type=\"button\"\n class=\"btn btn-tertiary\"\n (click)=\"primaryActionValue.action(primaryActionValue)\"\n >{{ primaryActionValue.label | translate }}</button\n >\n } @else {\n <ng-container *ngTemplateOutlet=\"action; context: { $implicit: primaryActionValue }\" />\n }\n </div>\n } @else {\n <div class=\"notification-item-primary-action\">\n <ng-content select=\"[action]\" />\n </div>\n }\n\n @let quickActionsValue = quickActions();\n @if (quickActionsValue) {\n <div class=\"notification-item-quick-actions\">\n @for (quickAction of quickActionsValue; track $index) {\n <ng-container *ngTemplateOutlet=\"action; context: { $implicit: quickAction }\" />\n }\n </div>\n } @else {\n <div class=\"notification-item-quick-actions\">\n <ng-content select=\"[quick-actions]\" />\n </div>\n }\n</div>\n\n<ng-template #action let-action>\n @switch (action.type) {\n @case ('action-circle-button') {\n <ng-container *ngTemplateOutlet=\"actionButton; context: { $implicit: action }\" />\n }\n @case ('action-icon-button') {\n <ng-container *ngTemplateOutlet=\"actionButton; context: { $implicit: action }\" />\n }\n @case ('router-link') {\n <ng-container *ngTemplateOutlet=\"routerLink; context: { $implicit: action }\" />\n }\n @case ('link') {\n <ng-container *ngTemplateOutlet=\"link; context: { $implicit: action }\" />\n }\n }\n</ng-template>\n\n<ng-template #content>\n <div class=\"d-flex flex-column gap-3 text-body\">\n <span class=\"si-body text-secondary\">{{ timeStamp() | translate }}</span>\n <span [class.si-h5-bold]=\"unread()\" [class.si-h5]=\"!unread()\">{{ heading() | translate }}</span>\n @if (description()) {\n <span class=\"si-body\">{{ description() | translate }}</span>\n }\n <div class=\"si-body\">\n <ng-content select=\"[description]\" />\n </div>\n </div>\n</ng-template>\n\n<ng-template #actionButton let-action>\n <button\n type=\"button\"\n class=\"btn btn-tertiary-ghost btn-icon\"\n [attr.aria-label]=\"action.ariaLabel\"\n (click)=\"action.action(action)\"\n >\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n </button>\n</ng-template>\n\n<ng-template #routerLink let-action>\n <a\n class=\"btn btn-tertiary-ghost p-2 btn-icon\"\n [routerLink]=\"action.routerLink\"\n [queryParams]=\"action.extras?.queryParams\"\n [queryParamsHandling]=\"action.extras?.queryParamsHandling\"\n [fragment]=\"action.extras?.fragment\"\n [state]=\"action.extras?.state\"\n [relativeTo]=\"action.extras?.relativeTo ?? activatedRoute\"\n [preserveFragment]=\"action.extras?.preserveFragment\"\n [skipLocationChange]=\"action.extras?.skipLocationChange\"\n [replaceUrl]=\"action.extras?.replaceUrl\"\n [attr.aria-label]=\"action.ariaLabel\"\n >\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n </a>\n</ng-template>\n\n<ng-template #link let-action>\n <a\n class=\"btn btn-tertiary-ghost p-2 btn-icon\"\n [href]=\"action.href\"\n [target]=\"action.target\"\n [attr.aria-label]=\"action.ariaLabel\"\n >\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n </a>\n</ng-template>\n\n<ng-template #menu let-action>\n <button\n type=\"button\"\n class=\"btn btn-tertiary-ghost btn-icon\"\n [attr.aria-label]=\"heading() + ' dropdown'\"\n [cdkMenuTriggerFor]=\"actionMenu\"\n >\n <si-icon [icon]=\"icons.elementOptionsVertical\" />\n </button>\n\n <ng-template #actionMenu>\n <si-menu-factory [items]=\"action.menuItems\" />\n </ng-template>\n</ng-template>\n", styles: ["div:empty{display:none!important}div:has(.notification-item-content a):hover{background-color:var(--element-base-1-hover)}.notification-item{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto auto}.notification-item a{text-decoration:none}.notification-item a:focus-visible div{outline:var(--element-button-focus-width) solid var(--element-focus-default);outline-offset:var(--element-button-focus-overlay-width)}.notification-item-indicator{grid-column:1;grid-row:1}.notification-item-indicator div{position:relative;display:flex;flex-direction:row;justify-content:center;align-items:center}.notification-item-indicator:has(si-avatar){margin-inline-end:16px}.notification-item-indicator:has(si-circle-status){margin-inline-end:4px}.notification-item-indicator:not(:has(si-avatar,si-circle-status)):has(si-icon){margin-inline-end:8px;margin-block-start:calc(1lh + 4px)}.notification-item-indicator:not(:has(si-avatar,si-circle-status,si-icon)){inline-size:0;margin-block-start:calc(1lh + 6px)}.notification-item-indicator:not(:has(si-avatar,si-circle-status,si-icon)) div{block-size:1rem}.notification-item-content{grid-column:2;grid-row:1;flex-grow:1}.notification-item-primary-action{grid-column:3;grid-row:1/span 2;display:flex;align-items:center;margin-inline-start:8px}.notification-item-quick-actions{grid-column:2;grid-row:2;display:flex;gap:8px;margin-block-start:8px}.dot{display:block;position:absolute;block-size:6px;inline-size:6px;border-radius:50%;background-color:var(--element-ui-1);inset-inline-start:-10px}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SiMenuFactoryComponent, selector: "si-menu-factory", inputs: ["items", "actionParam"] }, { kind: "directive", type: CdkMenuTrigger, selector: "[cdkMenuTriggerFor]", inputs: ["cdkMenuTriggerFor", "cdkMenuPosition", "cdkMenuTriggerData", "cdkMenuTriggerTransformOriginOn"], outputs: ["cdkMenuOpened", "cdkMenuClosed"], exportAs: ["cdkMenuTriggerFor"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default });
|
|
58
58
|
}
|
|
59
59
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNotificationItemComponent, decorators: [{
|
|
60
60
|
type: Component,
|
|
@@ -65,7 +65,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
65
65
|
SiMenuFactoryComponent,
|
|
66
66
|
CdkMenuTrigger,
|
|
67
67
|
SiIconComponent
|
|
68
|
-
], template: "<div class=\"notification-item px-6 py-5\">\n <div class=\"notification-item-indicator\">\n <div>\n @if (unread()) {\n <span class=\"dot\"></span>\n }\n <ng-content select=\"si-avatar,si-circle-status,si-icon,si-status-icon\" />\n </div>\n </div>\n\n <div class=\"notification-item-content\">\n @let itemLinkValue = itemLink();\n @if (itemLinkValue) {\n @switch (itemLinkValue.type) {\n @case ('link') {\n <a\n [href]=\"itemLinkValue.href\"\n [target]=\"itemLinkValue.target\"\n [attr.aria-label]=\"heading() + ' link'\"\n >\n <ng-container *ngTemplateOutlet=\"content\" />\n </a>\n }\n @case ('router-link') {\n <a\n [routerLink]=\"itemLinkValue.routerLink\"\n [queryParams]=\"itemLinkValue.extras?.queryParams\"\n [queryParamsHandling]=\"itemLinkValue.extras?.queryParamsHandling\"\n [fragment]=\"itemLinkValue.extras?.fragment\"\n [state]=\"itemLinkValue.extras?.state\"\n [relativeTo]=\"itemLinkValue.extras?.relativeTo ?? activatedRoute\"\n [preserveFragment]=\"itemLinkValue.extras?.preserveFragment\"\n [skipLocationChange]=\"itemLinkValue.extras?.skipLocationChange\"\n [replaceUrl]=\"itemLinkValue.extras?.replaceUrl\"\n [attr.aria-label]=\"heading() + ' link'\"\n >\n <ng-container *ngTemplateOutlet=\"content\" />\n </a>\n }\n }\n } @else {\n <ng-container *ngTemplateOutlet=\"content\" />\n }\n </div>\n\n @let primaryActionValue = primaryAction();\n @if (primaryActionValue) {\n <div class=\"notification-item-primary-action\">\n @if (primaryActionValue.type === 'menu') {\n <ng-container *ngTemplateOutlet=\"menu; context: { $implicit: primaryActionValue }\" />\n } @else if (primaryActionValue.type === 'action-button') {\n <button\n type=\"button\"\n class=\"btn btn-tertiary\"\n (click)=\"primaryActionValue.action(primaryActionValue)\"\n >{{ primaryActionValue.label | translate }}</button\n >\n } @else {\n <ng-container *ngTemplateOutlet=\"action; context: { $implicit: primaryActionValue }\" />\n }\n </div>\n } @else {\n <div class=\"notification-item-primary-action\">\n <ng-content select=\"[action]\" />\n </div>\n }\n\n @let quickActionsValue = quickActions();\n @if (quickActionsValue) {\n <div class=\"notification-item-quick-actions\">\n @for (quickAction of quickActionsValue; track $index) {\n <ng-container *ngTemplateOutlet=\"action; context: { $implicit: quickAction }\" />\n }\n </div>\n } @else {\n <div class=\"notification-item-quick-actions\">\n <ng-content select=\"[quick-actions]\" />\n </div>\n }\n</div>\n\n<ng-template #action let-action>\n @switch (action.type) {\n @case ('action-circle-button') {\n <ng-container *ngTemplateOutlet=\"actionButton; context: { $implicit: action }\" />\n }\n @case ('action-icon-button') {\n <ng-container *ngTemplateOutlet=\"actionButton; context: { $implicit: action }\" />\n }\n @case ('router-link') {\n <ng-container *ngTemplateOutlet=\"routerLink; context: { $implicit: action }\" />\n }\n @case ('link') {\n <ng-container *ngTemplateOutlet=\"link; context: { $implicit: action }\" />\n }\n }\n</ng-template>\n\n<ng-template #content>\n <div class=\"d-flex flex-column gap-3 text-body\">\n <span class=\"si-body text-secondary\">{{ timeStamp() | translate }}</span>\n <span [class.si-h5-bold]=\"unread()\" [class.si-h5]=\"!unread()\">{{ heading() | translate }}</span>\n @if (description()) {\n <span class=\"si-body\">{{ description() | translate }}</span>\n }\n <div class=\"si-body\">\n <ng-content select=\"[description]\" />\n </div>\n </div>\n</ng-template>\n\n<ng-template #actionButton let-action>\n <button\n type=\"button\"\n class=\"btn btn-tertiary-ghost btn-icon\"\n [attr.aria-label]=\"action.ariaLabel\"\n (click)=\"action.action(action)\"\n >\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n </button>\n</ng-template>\n\n<ng-template #routerLink let-action>\n <a\n class=\"btn btn-tertiary-ghost p-2 btn-icon\"\n [routerLink]=\"action.routerLink\"\n [queryParams]=\"action.extras?.queryParams\"\n [queryParamsHandling]=\"action.extras?.queryParamsHandling\"\n [fragment]=\"action.extras?.fragment\"\n [state]=\"action.extras?.state\"\n [relativeTo]=\"action.extras?.relativeTo ?? activatedRoute\"\n [preserveFragment]=\"action.extras?.preserveFragment\"\n [skipLocationChange]=\"action.extras?.skipLocationChange\"\n [replaceUrl]=\"action.extras?.replaceUrl\"\n [attr.aria-label]=\"action.ariaLabel\"\n >\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n </a>\n</ng-template>\n\n<ng-template #link let-action>\n <a\n class=\"btn btn-tertiary-ghost p-2 btn-icon\"\n [href]=\"action.href\"\n [target]=\"action.target\"\n [attr.aria-label]=\"action.ariaLabel\"\n >\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n </a>\n</ng-template>\n\n<ng-template #menu let-action>\n <button\n type=\"button\"\n class=\"btn btn-tertiary-ghost btn-icon\"\n [attr.aria-label]=\"heading() + ' dropdown'\"\n [cdkMenuTriggerFor]=\"actionMenu\"\n >\n <si-icon [icon]=\"icons.elementOptionsVertical\" />\n </button>\n\n <ng-template #actionMenu>\n <si-menu-factory [items]=\"action.menuItems\" />\n </ng-template>\n</ng-template>\n", styles: ["div:empty{display:none!important}div:has(.notification-item-content a):hover{background-color:var(--element-base-1-hover)}.notification-item{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto auto}.notification-item a{text-decoration:none}.notification-item a:focus-visible div{outline:var(--element-button-focus-width) solid var(--element-focus-default);outline-offset:var(--element-button-focus-overlay-width)}.notification-item-indicator{grid-column:1;grid-row:1}.notification-item-indicator div{position:relative;display:flex;flex-direction:row;justify-content:center;align-items:center}.notification-item-indicator:has(si-avatar){margin-inline-end:16px}.notification-item-indicator:has(si-circle-status){margin-inline-end:4px}.notification-item-indicator:not(:has(si-avatar,si-circle-status)):has(si-icon){margin-inline-end:8px;margin-block-start:calc(1lh + 4px)}.notification-item-indicator:not(:has(si-avatar,si-circle-status,si-icon)){inline-size:0;margin-block-start:calc(1lh + 6px)}.notification-item-indicator:not(:has(si-avatar,si-circle-status,si-icon)) div{block-size:1rem}.notification-item-content{grid-column:2;grid-row:1;flex-grow:1}.notification-item-primary-action{grid-column:3;grid-row:1/span 2;display:flex;align-items:center;margin-inline-start:8px}.notification-item-quick-actions{grid-column:2;grid-row:2;display:flex;gap:8px;margin-block-start:8px}.dot{display:block;position:absolute;block-size:6px;inline-size:6px;border-radius:50%;background-color:var(--element-ui-1);inset-inline-start:-10px}\n"] }]
|
|
68
|
+
], changeDetection: ChangeDetectionStrategy.Default, template: "<div class=\"notification-item px-6 py-5\">\n <div class=\"notification-item-indicator\">\n <div>\n @if (unread()) {\n <span class=\"dot\"></span>\n }\n <ng-content select=\"si-avatar,si-circle-status,si-icon,si-status-icon\" />\n </div>\n </div>\n\n <div class=\"notification-item-content\">\n @let itemLinkValue = itemLink();\n @if (itemLinkValue) {\n @switch (itemLinkValue.type) {\n @case ('link') {\n <a\n [href]=\"itemLinkValue.href\"\n [target]=\"itemLinkValue.target\"\n [attr.aria-label]=\"heading() + ' link'\"\n >\n <ng-container *ngTemplateOutlet=\"content\" />\n </a>\n }\n @case ('router-link') {\n <a\n [routerLink]=\"itemLinkValue.routerLink\"\n [queryParams]=\"itemLinkValue.extras?.queryParams\"\n [queryParamsHandling]=\"itemLinkValue.extras?.queryParamsHandling\"\n [fragment]=\"itemLinkValue.extras?.fragment\"\n [state]=\"itemLinkValue.extras?.state\"\n [relativeTo]=\"itemLinkValue.extras?.relativeTo ?? activatedRoute\"\n [preserveFragment]=\"itemLinkValue.extras?.preserveFragment\"\n [skipLocationChange]=\"itemLinkValue.extras?.skipLocationChange\"\n [replaceUrl]=\"itemLinkValue.extras?.replaceUrl\"\n [attr.aria-label]=\"heading() + ' link'\"\n >\n <ng-container *ngTemplateOutlet=\"content\" />\n </a>\n }\n }\n } @else {\n <ng-container *ngTemplateOutlet=\"content\" />\n }\n </div>\n\n @let primaryActionValue = primaryAction();\n @if (primaryActionValue) {\n <div class=\"notification-item-primary-action\">\n @if (primaryActionValue.type === 'menu') {\n <ng-container *ngTemplateOutlet=\"menu; context: { $implicit: primaryActionValue }\" />\n } @else if (primaryActionValue.type === 'action-button') {\n <button\n type=\"button\"\n class=\"btn btn-tertiary\"\n (click)=\"primaryActionValue.action(primaryActionValue)\"\n >{{ primaryActionValue.label | translate }}</button\n >\n } @else {\n <ng-container *ngTemplateOutlet=\"action; context: { $implicit: primaryActionValue }\" />\n }\n </div>\n } @else {\n <div class=\"notification-item-primary-action\">\n <ng-content select=\"[action]\" />\n </div>\n }\n\n @let quickActionsValue = quickActions();\n @if (quickActionsValue) {\n <div class=\"notification-item-quick-actions\">\n @for (quickAction of quickActionsValue; track $index) {\n <ng-container *ngTemplateOutlet=\"action; context: { $implicit: quickAction }\" />\n }\n </div>\n } @else {\n <div class=\"notification-item-quick-actions\">\n <ng-content select=\"[quick-actions]\" />\n </div>\n }\n</div>\n\n<ng-template #action let-action>\n @switch (action.type) {\n @case ('action-circle-button') {\n <ng-container *ngTemplateOutlet=\"actionButton; context: { $implicit: action }\" />\n }\n @case ('action-icon-button') {\n <ng-container *ngTemplateOutlet=\"actionButton; context: { $implicit: action }\" />\n }\n @case ('router-link') {\n <ng-container *ngTemplateOutlet=\"routerLink; context: { $implicit: action }\" />\n }\n @case ('link') {\n <ng-container *ngTemplateOutlet=\"link; context: { $implicit: action }\" />\n }\n }\n</ng-template>\n\n<ng-template #content>\n <div class=\"d-flex flex-column gap-3 text-body\">\n <span class=\"si-body text-secondary\">{{ timeStamp() | translate }}</span>\n <span [class.si-h5-bold]=\"unread()\" [class.si-h5]=\"!unread()\">{{ heading() | translate }}</span>\n @if (description()) {\n <span class=\"si-body\">{{ description() | translate }}</span>\n }\n <div class=\"si-body\">\n <ng-content select=\"[description]\" />\n </div>\n </div>\n</ng-template>\n\n<ng-template #actionButton let-action>\n <button\n type=\"button\"\n class=\"btn btn-tertiary-ghost btn-icon\"\n [attr.aria-label]=\"action.ariaLabel\"\n (click)=\"action.action(action)\"\n >\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n </button>\n</ng-template>\n\n<ng-template #routerLink let-action>\n <a\n class=\"btn btn-tertiary-ghost p-2 btn-icon\"\n [routerLink]=\"action.routerLink\"\n [queryParams]=\"action.extras?.queryParams\"\n [queryParamsHandling]=\"action.extras?.queryParamsHandling\"\n [fragment]=\"action.extras?.fragment\"\n [state]=\"action.extras?.state\"\n [relativeTo]=\"action.extras?.relativeTo ?? activatedRoute\"\n [preserveFragment]=\"action.extras?.preserveFragment\"\n [skipLocationChange]=\"action.extras?.skipLocationChange\"\n [replaceUrl]=\"action.extras?.replaceUrl\"\n [attr.aria-label]=\"action.ariaLabel\"\n >\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n </a>\n</ng-template>\n\n<ng-template #link let-action>\n <a\n class=\"btn btn-tertiary-ghost p-2 btn-icon\"\n [href]=\"action.href\"\n [target]=\"action.target\"\n [attr.aria-label]=\"action.ariaLabel\"\n >\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n </a>\n</ng-template>\n\n<ng-template #menu let-action>\n <button\n type=\"button\"\n class=\"btn btn-tertiary-ghost btn-icon\"\n [attr.aria-label]=\"heading() + ' dropdown'\"\n [cdkMenuTriggerFor]=\"actionMenu\"\n >\n <si-icon [icon]=\"icons.elementOptionsVertical\" />\n </button>\n\n <ng-template #actionMenu>\n <si-menu-factory [items]=\"action.menuItems\" />\n </ng-template>\n</ng-template>\n", styles: ["div:empty{display:none!important}div:has(.notification-item-content a):hover{background-color:var(--element-base-1-hover)}.notification-item{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto auto}.notification-item a{text-decoration:none}.notification-item a:focus-visible div{outline:var(--element-button-focus-width) solid var(--element-focus-default);outline-offset:var(--element-button-focus-overlay-width)}.notification-item-indicator{grid-column:1;grid-row:1}.notification-item-indicator div{position:relative;display:flex;flex-direction:row;justify-content:center;align-items:center}.notification-item-indicator:has(si-avatar){margin-inline-end:16px}.notification-item-indicator:has(si-circle-status){margin-inline-end:4px}.notification-item-indicator:not(:has(si-avatar,si-circle-status)):has(si-icon){margin-inline-end:8px;margin-block-start:calc(1lh + 4px)}.notification-item-indicator:not(:has(si-avatar,si-circle-status,si-icon)){inline-size:0;margin-block-start:calc(1lh + 6px)}.notification-item-indicator:not(:has(si-avatar,si-circle-status,si-icon)) div{block-size:1rem}.notification-item-content{grid-column:2;grid-row:1;flex-grow:1}.notification-item-primary-action{grid-column:3;grid-row:1/span 2;display:flex;align-items:center;margin-inline-start:8px}.notification-item-quick-actions{grid-column:2;grid-row:2;display:flex;gap:8px;margin-block-start:8px}.dot{display:block;position:absolute;block-size:6px;inline-size:6px;border-radius:50%;background-color:var(--element-ui-1);inset-inline-start:-10px}\n"] }]
|
|
69
69
|
}], propDecorators: { timeStamp: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeStamp", required: true }] }], heading: [{ type: i0.Input, args: [{ isSignal: true, alias: "heading", required: true }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], unread: [{ type: i0.Input, args: [{ isSignal: true, alias: "unread", required: false }] }], itemLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemLink", required: false }] }], quickActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "quickActions", required: false }] }], primaryAction: [{ type: i0.Input, args: [{ isSignal: true, alias: "primaryAction", required: false }] }] } });
|
|
70
70
|
|
|
71
71
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-notification-item.mjs","sources":["../../../../projects/element-ng/notification-item/si-notification-item.component.ts","../../../../projects/element-ng/notification-item/si-notification-item.component.html","../../../../projects/element-ng/notification-item/index.ts","../../../../projects/element-ng/notification-item/siemens-element-ng-notification-item.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { CdkMenuTrigger } from '@angular/cdk/menu';\nimport { CommonModule } from '@angular/common';\nimport { booleanAttribute, Component, inject, input } from '@angular/core';\nimport { ActivatedRoute, RouterModule, type NavigationExtras } from '@angular/router';\nimport { elementOptionsVertical } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiMenuFactoryComponent, type MenuItem } from '@siemens/element-ng/menu';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\n/**\n * Interface for a router link in a notification item.\n * @param type - The type of the link, always 'router-link'.\n * @param routerLink - The router link to navigate to.\n * @param extras - Optional navigation extras for the router.\n */\nexport interface NotificationItemRouterLink {\n type: 'router-link';\n routerLink: string | any[];\n extras?: NavigationExtras;\n}\n\n/**\n * Interface for a standard link in a notification item.\n * @param type - The type of the link, always 'link'.\n * @param href - The URL to navigate to.\n * @param target - Optional target attribute for the link.\n */\nexport interface NotificationItemLink {\n type: 'link';\n href: string;\n target?: string;\n}\n\n/**\n * Base interface for notification item actions.\n * @param ariaLabel - The ARIA label for accessibility.\n * @param icon - The icon to display for the action.\n */\nexport interface NotificationItemBase {\n ariaLabel: TranslatableString;\n icon: string;\n}\n\n/**\n * Interface for an action circle button in a notification item.\n * @param type - The type of the action, always 'action-circle-button'.\n * @param customClass - Optional custom CSS class for styling.\n * @param action - The action to perform when the button is clicked.\n * @deprecated Use NotificationItemActionIconButton instead. This will be removed in a future release.\n */\nexport interface NotificationItemActionCircleButton extends NotificationItemBase {\n type: 'action-circle-button';\n customClass?: string;\n action: (source: this) => void;\n}\n\n/**\n * Interface for an action icon button in a notification item.\n * @param type - The type of the action, always 'action-icon-button'.\n * @param customClass - Optional custom CSS class for styling.\n * @param action - The action to perform when the button is clicked.\n */\nexport interface NotificationItemActionIconButton extends NotificationItemBase {\n type: 'action-icon-button';\n customClass?: string;\n action: (source: this) => void;\n}\n\n/**\n * Interface for a router link with an icon in a notification item.\n * @param type - The type of the link, always 'router-link'.\n * @param routerLink - The router link to navigate to.\n * @param extras - Optional navigation extras for the router.\n */\nexport interface NotificationItemRouterLinkIcon extends NotificationItemBase {\n type: 'router-link';\n routerLink: string | any[];\n extras?: NavigationExtras;\n}\n\n/**\n * Interface for a standard link with an icon in a notification item.\n * @param type - The type of the link, always 'link'.\n * @param href - The URL to navigate to.\n * @param target - Optional target attribute for the link.\n */\nexport interface NotificationItemLinkIcon extends NotificationItemBase {\n type: 'link';\n href: string;\n target?: string;\n}\n\n/**\n * Interface for an action button in a notification item.\n * @param type - The type of the action, always 'action-button'.\n * @param label - The label to display on the button.\n * @param action - The action to perform when the button is clicked.\n */\nexport interface NotificationItemActionButton {\n type: 'action-button';\n label: TranslatableString;\n action: (source: this) => void;\n}\n\n/**\n * Interface for a menu in a notification item.\n * @param type - The type of the action, always 'menu'.\n * @param menuItems - The menu items to display in the menu.\n */\nexport interface NotificationItemMenu {\n type: 'menu';\n menuItems: MenuItem[];\n}\n\n/**\n * Union type for quick actions in a notification item.\n */\nexport type NotificationItemQuickAction =\n | NotificationItemActionCircleButton\n | NotificationItemActionIconButton\n | NotificationItemLinkIcon\n | NotificationItemRouterLinkIcon;\n\n/**\n * Union type for primary actions in a notification item.\n */\nexport type NotificationItemPrimaryAction =\n | NotificationItemActionCircleButton\n | NotificationItemActionIconButton\n | NotificationItemLinkIcon\n | NotificationItemRouterLinkIcon\n | NotificationItemMenu\n | NotificationItemActionButton;\n\n/**\n * This component represents a single notification that can be used within notification\n * centers, popovers, or other containers. It supports various action types including\n * router links, standard links, action buttons, and menus.\n */\n@Component({\n selector: 'si-notification-item',\n imports: [\n SiTranslatePipe,\n RouterModule,\n CommonModule,\n SiMenuFactoryComponent,\n CdkMenuTrigger,\n SiIconComponent\n ],\n templateUrl: './si-notification-item.component.html',\n styleUrl: './si-notification-item.component.scss'\n})\nexport class SiNotificationItemComponent {\n protected readonly icons = addIcons({ elementOptionsVertical });\n\n /**\n * The timestamp of the notification item.\n */\n readonly timeStamp = input.required<TranslatableString>();\n /**\n * The heading of the notification item.\n */\n readonly heading = input.required<TranslatableString>();\n /**\n * Optional translatable description.\n */\n readonly description = input<TranslatableString>();\n /**\n * Unread messages are emphasized with a bolder font.\n *\n * @defaultValue false\n */\n readonly unread = input(false, { transform: booleanAttribute });\n /**\n * Link to the source or relevant information of the notification,\n * which triggers when clicking on the notification item text area.\n */\n readonly itemLink = input<NotificationItemRouterLink | NotificationItemLink>();\n /**\n * Actions that are displayed below the text of the notification.\n */\n readonly quickActions = input<NotificationItemQuickAction[]>();\n /**\n * Action that is displayed on the right side of the notification.\n */\n readonly primaryAction = input<NotificationItemPrimaryAction>();\n\n protected readonly activatedRoute = inject(ActivatedRoute, { optional: true });\n}\n","<div class=\"notification-item px-6 py-5\">\n <div class=\"notification-item-indicator\">\n <div>\n @if (unread()) {\n <span class=\"dot\"></span>\n }\n <ng-content select=\"si-avatar,si-circle-status,si-icon,si-status-icon\" />\n </div>\n </div>\n\n <div class=\"notification-item-content\">\n @let itemLinkValue = itemLink();\n @if (itemLinkValue) {\n @switch (itemLinkValue.type) {\n @case ('link') {\n <a\n [href]=\"itemLinkValue.href\"\n [target]=\"itemLinkValue.target\"\n [attr.aria-label]=\"heading() + ' link'\"\n >\n <ng-container *ngTemplateOutlet=\"content\" />\n </a>\n }\n @case ('router-link') {\n <a\n [routerLink]=\"itemLinkValue.routerLink\"\n [queryParams]=\"itemLinkValue.extras?.queryParams\"\n [queryParamsHandling]=\"itemLinkValue.extras?.queryParamsHandling\"\n [fragment]=\"itemLinkValue.extras?.fragment\"\n [state]=\"itemLinkValue.extras?.state\"\n [relativeTo]=\"itemLinkValue.extras?.relativeTo ?? activatedRoute\"\n [preserveFragment]=\"itemLinkValue.extras?.preserveFragment\"\n [skipLocationChange]=\"itemLinkValue.extras?.skipLocationChange\"\n [replaceUrl]=\"itemLinkValue.extras?.replaceUrl\"\n [attr.aria-label]=\"heading() + ' link'\"\n >\n <ng-container *ngTemplateOutlet=\"content\" />\n </a>\n }\n }\n } @else {\n <ng-container *ngTemplateOutlet=\"content\" />\n }\n </div>\n\n @let primaryActionValue = primaryAction();\n @if (primaryActionValue) {\n <div class=\"notification-item-primary-action\">\n @if (primaryActionValue.type === 'menu') {\n <ng-container *ngTemplateOutlet=\"menu; context: { $implicit: primaryActionValue }\" />\n } @else if (primaryActionValue.type === 'action-button') {\n <button\n type=\"button\"\n class=\"btn btn-tertiary\"\n (click)=\"primaryActionValue.action(primaryActionValue)\"\n >{{ primaryActionValue.label | translate }}</button\n >\n } @else {\n <ng-container *ngTemplateOutlet=\"action; context: { $implicit: primaryActionValue }\" />\n }\n </div>\n } @else {\n <div class=\"notification-item-primary-action\">\n <ng-content select=\"[action]\" />\n </div>\n }\n\n @let quickActionsValue = quickActions();\n @if (quickActionsValue) {\n <div class=\"notification-item-quick-actions\">\n @for (quickAction of quickActionsValue; track $index) {\n <ng-container *ngTemplateOutlet=\"action; context: { $implicit: quickAction }\" />\n }\n </div>\n } @else {\n <div class=\"notification-item-quick-actions\">\n <ng-content select=\"[quick-actions]\" />\n </div>\n }\n</div>\n\n<ng-template #action let-action>\n @switch (action.type) {\n @case ('action-circle-button') {\n <ng-container *ngTemplateOutlet=\"actionButton; context: { $implicit: action }\" />\n }\n @case ('action-icon-button') {\n <ng-container *ngTemplateOutlet=\"actionButton; context: { $implicit: action }\" />\n }\n @case ('router-link') {\n <ng-container *ngTemplateOutlet=\"routerLink; context: { $implicit: action }\" />\n }\n @case ('link') {\n <ng-container *ngTemplateOutlet=\"link; context: { $implicit: action }\" />\n }\n }\n</ng-template>\n\n<ng-template #content>\n <div class=\"d-flex flex-column gap-3 text-body\">\n <span class=\"si-body text-secondary\">{{ timeStamp() | translate }}</span>\n <span [class.si-h5-bold]=\"unread()\" [class.si-h5]=\"!unread()\">{{ heading() | translate }}</span>\n @if (description()) {\n <span class=\"si-body\">{{ description() | translate }}</span>\n }\n <div class=\"si-body\">\n <ng-content select=\"[description]\" />\n </div>\n </div>\n</ng-template>\n\n<ng-template #actionButton let-action>\n <button\n type=\"button\"\n class=\"btn btn-tertiary-ghost btn-icon\"\n [attr.aria-label]=\"action.ariaLabel\"\n (click)=\"action.action(action)\"\n >\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n </button>\n</ng-template>\n\n<ng-template #routerLink let-action>\n <a\n class=\"btn btn-tertiary-ghost p-2 btn-icon\"\n [routerLink]=\"action.routerLink\"\n [queryParams]=\"action.extras?.queryParams\"\n [queryParamsHandling]=\"action.extras?.queryParamsHandling\"\n [fragment]=\"action.extras?.fragment\"\n [state]=\"action.extras?.state\"\n [relativeTo]=\"action.extras?.relativeTo ?? activatedRoute\"\n [preserveFragment]=\"action.extras?.preserveFragment\"\n [skipLocationChange]=\"action.extras?.skipLocationChange\"\n [replaceUrl]=\"action.extras?.replaceUrl\"\n [attr.aria-label]=\"action.ariaLabel\"\n >\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n </a>\n</ng-template>\n\n<ng-template #link let-action>\n <a\n class=\"btn btn-tertiary-ghost p-2 btn-icon\"\n [href]=\"action.href\"\n [target]=\"action.target\"\n [attr.aria-label]=\"action.ariaLabel\"\n >\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n </a>\n</ng-template>\n\n<ng-template #menu let-action>\n <button\n type=\"button\"\n class=\"btn btn-tertiary-ghost btn-icon\"\n [attr.aria-label]=\"heading() + ' dropdown'\"\n [cdkMenuTriggerFor]=\"actionMenu\"\n >\n <si-icon [icon]=\"icons.elementOptionsVertical\" />\n </button>\n\n <ng-template #actionMenu>\n <si-menu-factory [items]=\"action.menuItems\" />\n </ng-template>\n</ng-template>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-notification-item.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"siemens-element-ng-notification-item.mjs","sources":["../../../../projects/element-ng/notification-item/si-notification-item.component.ts","../../../../projects/element-ng/notification-item/si-notification-item.component.html","../../../../projects/element-ng/notification-item/index.ts","../../../../projects/element-ng/notification-item/siemens-element-ng-notification-item.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { CdkMenuTrigger } from '@angular/cdk/menu';\nimport { CommonModule } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { ActivatedRoute, RouterModule, type NavigationExtras } from '@angular/router';\nimport { elementOptionsVertical } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiMenuFactoryComponent, type MenuItem } from '@siemens/element-ng/menu';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\n/**\n * Interface for a router link in a notification item.\n * @param type - The type of the link, always 'router-link'.\n * @param routerLink - The router link to navigate to.\n * @param extras - Optional navigation extras for the router.\n */\nexport interface NotificationItemRouterLink {\n type: 'router-link';\n routerLink: string | any[];\n extras?: NavigationExtras;\n}\n\n/**\n * Interface for a standard link in a notification item.\n * @param type - The type of the link, always 'link'.\n * @param href - The URL to navigate to.\n * @param target - Optional target attribute for the link.\n */\nexport interface NotificationItemLink {\n type: 'link';\n href: string;\n target?: string;\n}\n\n/**\n * Base interface for notification item actions.\n * @param ariaLabel - The ARIA label for accessibility.\n * @param icon - The icon to display for the action.\n */\nexport interface NotificationItemBase {\n ariaLabel: TranslatableString;\n icon: string;\n}\n\n/**\n * Interface for an action circle button in a notification item.\n * @param type - The type of the action, always 'action-circle-button'.\n * @param customClass - Optional custom CSS class for styling.\n * @param action - The action to perform when the button is clicked.\n * @deprecated Use NotificationItemActionIconButton instead. This will be removed in a future release.\n */\nexport interface NotificationItemActionCircleButton extends NotificationItemBase {\n type: 'action-circle-button';\n customClass?: string;\n action: (source: this) => void;\n}\n\n/**\n * Interface for an action icon button in a notification item.\n * @param type - The type of the action, always 'action-icon-button'.\n * @param customClass - Optional custom CSS class for styling.\n * @param action - The action to perform when the button is clicked.\n */\nexport interface NotificationItemActionIconButton extends NotificationItemBase {\n type: 'action-icon-button';\n customClass?: string;\n action: (source: this) => void;\n}\n\n/**\n * Interface for a router link with an icon in a notification item.\n * @param type - The type of the link, always 'router-link'.\n * @param routerLink - The router link to navigate to.\n * @param extras - Optional navigation extras for the router.\n */\nexport interface NotificationItemRouterLinkIcon extends NotificationItemBase {\n type: 'router-link';\n routerLink: string | any[];\n extras?: NavigationExtras;\n}\n\n/**\n * Interface for a standard link with an icon in a notification item.\n * @param type - The type of the link, always 'link'.\n * @param href - The URL to navigate to.\n * @param target - Optional target attribute for the link.\n */\nexport interface NotificationItemLinkIcon extends NotificationItemBase {\n type: 'link';\n href: string;\n target?: string;\n}\n\n/**\n * Interface for an action button in a notification item.\n * @param type - The type of the action, always 'action-button'.\n * @param label - The label to display on the button.\n * @param action - The action to perform when the button is clicked.\n */\nexport interface NotificationItemActionButton {\n type: 'action-button';\n label: TranslatableString;\n action: (source: this) => void;\n}\n\n/**\n * Interface for a menu in a notification item.\n * @param type - The type of the action, always 'menu'.\n * @param menuItems - The menu items to display in the menu.\n */\nexport interface NotificationItemMenu {\n type: 'menu';\n menuItems: MenuItem[];\n}\n\n/**\n * Union type for quick actions in a notification item.\n */\nexport type NotificationItemQuickAction =\n | NotificationItemActionCircleButton\n | NotificationItemActionIconButton\n | NotificationItemLinkIcon\n | NotificationItemRouterLinkIcon;\n\n/**\n * Union type for primary actions in a notification item.\n */\nexport type NotificationItemPrimaryAction =\n | NotificationItemActionCircleButton\n | NotificationItemActionIconButton\n | NotificationItemLinkIcon\n | NotificationItemRouterLinkIcon\n | NotificationItemMenu\n | NotificationItemActionButton;\n\n/**\n * This component represents a single notification that can be used within notification\n * centers, popovers, or other containers. It supports various action types including\n * router links, standard links, action buttons, and menus.\n */\n@Component({\n selector: 'si-notification-item',\n imports: [\n SiTranslatePipe,\n RouterModule,\n CommonModule,\n SiMenuFactoryComponent,\n CdkMenuTrigger,\n SiIconComponent\n ],\n templateUrl: './si-notification-item.component.html',\n styleUrl: './si-notification-item.component.scss',\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class SiNotificationItemComponent {\n protected readonly icons = addIcons({ elementOptionsVertical });\n\n /**\n * The timestamp of the notification item.\n */\n readonly timeStamp = input.required<TranslatableString>();\n /**\n * The heading of the notification item.\n */\n readonly heading = input.required<TranslatableString>();\n /**\n * Optional translatable description.\n */\n readonly description = input<TranslatableString>();\n /**\n * Unread messages are emphasized with a bolder font.\n *\n * @defaultValue false\n */\n readonly unread = input(false, { transform: booleanAttribute });\n /**\n * Link to the source or relevant information of the notification,\n * which triggers when clicking on the notification item text area.\n */\n readonly itemLink = input<NotificationItemRouterLink | NotificationItemLink>();\n /**\n * Actions that are displayed below the text of the notification.\n */\n readonly quickActions = input<NotificationItemQuickAction[]>();\n /**\n * Action that is displayed on the right side of the notification.\n */\n readonly primaryAction = input<NotificationItemPrimaryAction>();\n\n protected readonly activatedRoute = inject(ActivatedRoute, { optional: true });\n}\n","<div class=\"notification-item px-6 py-5\">\n <div class=\"notification-item-indicator\">\n <div>\n @if (unread()) {\n <span class=\"dot\"></span>\n }\n <ng-content select=\"si-avatar,si-circle-status,si-icon,si-status-icon\" />\n </div>\n </div>\n\n <div class=\"notification-item-content\">\n @let itemLinkValue = itemLink();\n @if (itemLinkValue) {\n @switch (itemLinkValue.type) {\n @case ('link') {\n <a\n [href]=\"itemLinkValue.href\"\n [target]=\"itemLinkValue.target\"\n [attr.aria-label]=\"heading() + ' link'\"\n >\n <ng-container *ngTemplateOutlet=\"content\" />\n </a>\n }\n @case ('router-link') {\n <a\n [routerLink]=\"itemLinkValue.routerLink\"\n [queryParams]=\"itemLinkValue.extras?.queryParams\"\n [queryParamsHandling]=\"itemLinkValue.extras?.queryParamsHandling\"\n [fragment]=\"itemLinkValue.extras?.fragment\"\n [state]=\"itemLinkValue.extras?.state\"\n [relativeTo]=\"itemLinkValue.extras?.relativeTo ?? activatedRoute\"\n [preserveFragment]=\"itemLinkValue.extras?.preserveFragment\"\n [skipLocationChange]=\"itemLinkValue.extras?.skipLocationChange\"\n [replaceUrl]=\"itemLinkValue.extras?.replaceUrl\"\n [attr.aria-label]=\"heading() + ' link'\"\n >\n <ng-container *ngTemplateOutlet=\"content\" />\n </a>\n }\n }\n } @else {\n <ng-container *ngTemplateOutlet=\"content\" />\n }\n </div>\n\n @let primaryActionValue = primaryAction();\n @if (primaryActionValue) {\n <div class=\"notification-item-primary-action\">\n @if (primaryActionValue.type === 'menu') {\n <ng-container *ngTemplateOutlet=\"menu; context: { $implicit: primaryActionValue }\" />\n } @else if (primaryActionValue.type === 'action-button') {\n <button\n type=\"button\"\n class=\"btn btn-tertiary\"\n (click)=\"primaryActionValue.action(primaryActionValue)\"\n >{{ primaryActionValue.label | translate }}</button\n >\n } @else {\n <ng-container *ngTemplateOutlet=\"action; context: { $implicit: primaryActionValue }\" />\n }\n </div>\n } @else {\n <div class=\"notification-item-primary-action\">\n <ng-content select=\"[action]\" />\n </div>\n }\n\n @let quickActionsValue = quickActions();\n @if (quickActionsValue) {\n <div class=\"notification-item-quick-actions\">\n @for (quickAction of quickActionsValue; track $index) {\n <ng-container *ngTemplateOutlet=\"action; context: { $implicit: quickAction }\" />\n }\n </div>\n } @else {\n <div class=\"notification-item-quick-actions\">\n <ng-content select=\"[quick-actions]\" />\n </div>\n }\n</div>\n\n<ng-template #action let-action>\n @switch (action.type) {\n @case ('action-circle-button') {\n <ng-container *ngTemplateOutlet=\"actionButton; context: { $implicit: action }\" />\n }\n @case ('action-icon-button') {\n <ng-container *ngTemplateOutlet=\"actionButton; context: { $implicit: action }\" />\n }\n @case ('router-link') {\n <ng-container *ngTemplateOutlet=\"routerLink; context: { $implicit: action }\" />\n }\n @case ('link') {\n <ng-container *ngTemplateOutlet=\"link; context: { $implicit: action }\" />\n }\n }\n</ng-template>\n\n<ng-template #content>\n <div class=\"d-flex flex-column gap-3 text-body\">\n <span class=\"si-body text-secondary\">{{ timeStamp() | translate }}</span>\n <span [class.si-h5-bold]=\"unread()\" [class.si-h5]=\"!unread()\">{{ heading() | translate }}</span>\n @if (description()) {\n <span class=\"si-body\">{{ description() | translate }}</span>\n }\n <div class=\"si-body\">\n <ng-content select=\"[description]\" />\n </div>\n </div>\n</ng-template>\n\n<ng-template #actionButton let-action>\n <button\n type=\"button\"\n class=\"btn btn-tertiary-ghost btn-icon\"\n [attr.aria-label]=\"action.ariaLabel\"\n (click)=\"action.action(action)\"\n >\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n </button>\n</ng-template>\n\n<ng-template #routerLink let-action>\n <a\n class=\"btn btn-tertiary-ghost p-2 btn-icon\"\n [routerLink]=\"action.routerLink\"\n [queryParams]=\"action.extras?.queryParams\"\n [queryParamsHandling]=\"action.extras?.queryParamsHandling\"\n [fragment]=\"action.extras?.fragment\"\n [state]=\"action.extras?.state\"\n [relativeTo]=\"action.extras?.relativeTo ?? activatedRoute\"\n [preserveFragment]=\"action.extras?.preserveFragment\"\n [skipLocationChange]=\"action.extras?.skipLocationChange\"\n [replaceUrl]=\"action.extras?.replaceUrl\"\n [attr.aria-label]=\"action.ariaLabel\"\n >\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n </a>\n</ng-template>\n\n<ng-template #link let-action>\n <a\n class=\"btn btn-tertiary-ghost p-2 btn-icon\"\n [href]=\"action.href\"\n [target]=\"action.target\"\n [attr.aria-label]=\"action.ariaLabel\"\n >\n <si-icon class=\"icon\" [icon]=\"action.icon\" />\n </a>\n</ng-template>\n\n<ng-template #menu let-action>\n <button\n type=\"button\"\n class=\"btn btn-tertiary-ghost btn-icon\"\n [attr.aria-label]=\"heading() + ' dropdown'\"\n [cdkMenuTriggerFor]=\"actionMenu\"\n >\n <si-icon [icon]=\"icons.elementOptionsVertical\" />\n </button>\n\n <ng-template #actionMenu>\n <si-menu-factory [items]=\"action.menuItems\" />\n </ng-template>\n</ng-template>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-notification-item.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -59,7 +59,10 @@ class SiPaginationComponent {
|
|
|
59
59
|
* ```
|
|
60
60
|
*/
|
|
61
61
|
navAriaLabel = input(t(() => $localize `:@@SI_PAGINATION.NAV_LABEL:Pagination`), ...(ngDevMode ? [{ debugName: "navAriaLabel" }] : []));
|
|
62
|
-
calculatedTotalPages = computed(() =>
|
|
62
|
+
calculatedTotalPages = computed(() => {
|
|
63
|
+
const safePageSize = Math.max(this.pageSize() ?? 0, 1);
|
|
64
|
+
return this.totalPages() ?? Math.ceil((this.totalRowCount() ?? 0) / safePageSize);
|
|
65
|
+
}, ...(ngDevMode ? [{ debugName: "calculatedTotalPages" }] : []));
|
|
63
66
|
prevDisabled = computed(() => this.currentPage() === 1, ...(ngDevMode ? [{ debugName: "prevDisabled" }] : []));
|
|
64
67
|
nextDisabled = computed(() => this.currentPage() === this.calculatedTotalPages(), ...(ngDevMode ? [{ debugName: "nextDisabled" }] : []));
|
|
65
68
|
pageButtons = computed(() => {
|