@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,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, ElementRef, Component, signal, makeEnvironmentProviders } from '@angular/core';
|
|
2
|
+
import { inject, ElementRef, ChangeDetectionStrategy, Component, signal, makeEnvironmentProviders } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/forms';
|
|
4
4
|
import { FormsModule } from '@angular/forms';
|
|
5
5
|
import { SiDatepickerDirective, SiCalendarButtonComponent } from '@siemens/element-ng/datepicker';
|
|
@@ -92,7 +92,7 @@ class AgDateInputComponent {
|
|
|
92
92
|
(ngModelChange)="onDateChange()"
|
|
93
93
|
/>
|
|
94
94
|
</si-calendar-button>
|
|
95
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: SiDatepickerDirective, selector: "[siDatepicker]", inputs: ["autoClose"], exportAs: ["siDatepicker"] }, { kind: "component", type: SiCalendarButtonComponent, selector: "si-calendar-button", inputs: ["ariaLabel"] }] });
|
|
95
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: SiDatepickerDirective, selector: "[siDatepicker]", inputs: ["autoClose"], exportAs: ["siDatepicker"] }, { kind: "component", type: SiCalendarButtonComponent, selector: "si-calendar-button", inputs: ["ariaLabel"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
|
|
96
96
|
}
|
|
97
97
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AgDateInputComponent, decorators: [{
|
|
98
98
|
type: Component,
|
|
@@ -110,7 +110,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
110
110
|
(ngModelChange)="onDateChange()"
|
|
111
111
|
/>
|
|
112
112
|
</si-calendar-button>
|
|
113
|
-
|
|
113
|
+
`,
|
|
114
|
+
changeDetection: ChangeDetectionStrategy.Default
|
|
114
115
|
}]
|
|
115
116
|
}] });
|
|
116
117
|
|
|
@@ -157,11 +158,11 @@ class AgNoRowsOverlayComponent {
|
|
|
157
158
|
this.content.set(params.content);
|
|
158
159
|
}
|
|
159
160
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AgNoRowsOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
160
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.8", type: AgNoRowsOverlayComponent, isStandalone: true, selector: "si-ag-no-rows-overlay", ngImport: i0, template: ` <si-empty-state [icon]="icon()" [heading]="heading()" [content]="content()" /> `, isInline: true, styles: [":host{display:flex;align-items:center;justify-content:center;height:100%;width:100%}\n"], dependencies: [{ kind: "component", type: SiEmptyStateComponent, selector: "si-empty-state", inputs: ["icon", "heading", "content"] }] });
|
|
161
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.8", type: AgNoRowsOverlayComponent, isStandalone: true, selector: "si-ag-no-rows-overlay", ngImport: i0, template: ` <si-empty-state [icon]="icon()" [heading]="heading()" [content]="content()" /> `, isInline: true, styles: [":host{display:flex;align-items:center;justify-content:center;height:100%;width:100%}\n"], dependencies: [{ kind: "component", type: SiEmptyStateComponent, selector: "si-empty-state", inputs: ["icon", "heading", "content"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
|
|
161
162
|
}
|
|
162
163
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AgNoRowsOverlayComponent, decorators: [{
|
|
163
164
|
type: Component,
|
|
164
|
-
args: [{ selector: 'si-ag-no-rows-overlay', imports: [SiEmptyStateComponent], template: ` <si-empty-state [icon]="icon()" [heading]="heading()" [content]="content()" /> `, styles: [":host{display:flex;align-items:center;justify-content:center;height:100%;width:100%}\n"] }]
|
|
165
|
+
args: [{ selector: 'si-ag-no-rows-overlay', imports: [SiEmptyStateComponent], template: ` <si-empty-state [icon]="icon()" [heading]="heading()" [content]="content()" /> `, changeDetection: ChangeDetectionStrategy.Default, styles: [":host{display:flex;align-items:center;justify-content:center;height:100%;width:100%}\n"] }]
|
|
165
166
|
}] });
|
|
166
167
|
|
|
167
168
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-ag-grid.mjs","sources":["../../../../projects/element-ng/ag-grid/components/ag-date-input.component.ts","../../../../projects/element-ng/ag-grid/components/ag-no-rows-overlay.component.ts","../../../../projects/element-ng/ag-grid/components/index.ts","../../../../projects/element-ng/ag-grid/parts/checkbox-style.part.ts","../../../../projects/element-ng/ag-grid/parts/color-scheme.part.ts","../../../../projects/element-ng/ag-grid/parts/icon-overrides.part.ts","../../../../projects/element-ng/ag-grid/parts/pagination-style.part.ts","../../../../projects/element-ng/ag-grid/parts/pinning-style.part.ts","../../../../projects/element-ng/ag-grid/parts/radio-style.part.ts","../../../../projects/element-ng/ag-grid/parts/skeleton-style.part.ts","../../../../projects/element-ng/ag-grid/parts/text-filter-style.part.ts","../../../../projects/element-ng/ag-grid/parts/toggle-style.part.ts","../../../../projects/element-ng/ag-grid/parts/index.ts","../../../../projects/element-ng/ag-grid/themes.ts","../../../../projects/element-ng/ag-grid/provider.ts","../../../../projects/element-ng/ag-grid/index.ts","../../../../projects/element-ng/ag-grid/siemens-element-ng-ag-grid.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { Component, ElementRef, OnDestroy, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SiCalendarButtonComponent, SiDatepickerDirective } from '@siemens/element-ng/datepicker';\nimport { IDateComp, IDateParams } from 'ag-grid-community';\n\n/**\n * Custom AG Grid date component using Element datepicker.\n * This component replaces the native HTML date input with the Element design system datepicker.\n */\n@Component({\n selector: 'si-ag-date-input',\n imports: [FormsModule, SiDatepickerDirective, SiCalendarButtonComponent],\n template: `\n <si-calendar-button class=\"w-100\">\n <input\n type=\"text\"\n class=\"form-control\"\n siDatepicker\n [autoClose]=\"true\"\n [(ngModel)]=\"date\"\n (ngModelChange)=\"onDateChange()\"\n />\n </si-calendar-button>\n `\n})\nexport class AgDateInputComponent implements IDateComp, OnDestroy {\n private elementRef = inject(ElementRef);\n\n /**\n * The selected date value.\n */\n public date: Date | undefined = undefined;\n\n /**\n * AG Grid date filter parameters.\n * @internal\n */\n private params!: IDateParams;\n\n /**\n * Document click event listener for calendar overlay.\n * @internal\n */\n private documentClickListener?: (event: MouseEvent) => void;\n\n /**\n * Notifies AG Grid when the date value changes.\n * @internal\n */\n onDateChange(): void {\n if (this.params) {\n this.params.onDateChanged();\n }\n }\n\n /**\n * Lifecycle hook called after the component GUI is attached.\n * Sets up event listeners to prevent filter popup from closing when interacting with calendar.\n */\n afterGuiAttached(): void {\n // Remove any existing listener to prevent duplicates\n if (this.documentClickListener) {\n document.removeEventListener('mousedown', this.documentClickListener, true);\n }\n\n // Intercept document click events to keep the filter open when clicking the calendar\n this.documentClickListener = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n const calendarOverlay = target.closest('si-datepicker, .cdk-overlay-pane');\n\n if (calendarOverlay) {\n event.stopPropagation();\n }\n };\n document.addEventListener('mousedown', this.documentClickListener, true);\n }\n\n ngOnDestroy(): void {\n if (this.documentClickListener) {\n document.removeEventListener('mousedown', this.documentClickListener, true);\n }\n }\n\n agInit(params: IDateParams): void {\n this.params = params;\n }\n\n getDate(): Date | null {\n return this.date ?? null;\n }\n\n getGui(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n setDate(date: Date | null): void {\n this.date = date ?? undefined;\n if (this.params) {\n this.params.onDateChanged();\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { Component, signal } from '@angular/core';\nimport { SiEmptyStateComponent } from '@siemens/element-ng/empty-state';\nimport { INoRowsOverlayParams } from 'ag-grid-community';\n\n/**\n * Custom AG Grid no rows overlay component using Element Empty State.\n * This component is displayed when the grid has no data to show.\n *\n * @example\n * Using with custom parameters\n * ```typescript\n * <ag-grid-angular\n * [noRowsOverlayComponent]=\"AgNoRowsOverlayComponent\"\n * [noRowsOverlayComponentParams]=\"{\n * icon: 'element-technical-search',\n * heading: 'No results found',\n * content: 'Try adjusting your filters.'\n * }\"\n * />\n * ```\n */\n@Component({\n selector: 'si-ag-no-rows-overlay',\n imports: [SiEmptyStateComponent],\n template: ` <si-empty-state [icon]=\"icon()\" [heading]=\"heading()\" [content]=\"content()\" /> `,\n styles: `\n :host {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n }\n `\n})\nexport class AgNoRowsOverlayComponent {\n /**\n * Icon to display in the empty state.\n *\n */\n protected readonly icon = signal<string>('');\n\n /**\n * Heading text for the empty state.\n *\n */\n protected readonly heading = signal<string>('');\n\n /**\n * Description text for the empty state.\n *\n */\n protected readonly content = signal<string | undefined>(undefined);\n\n agInit(params: INoRowsOverlayParams & { icon: string; heading: string; content?: string }): void {\n this.icon.set(params.icon);\n this.heading.set(params.heading);\n this.content.set(params.content);\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './ag-date-input.component';\nexport * from './ag-no-rows-overlay.component';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a checkbox style part for the Element AG Grid theme.\n * This part overrides the unchecked checkbox hover state to match Element design system.\n *\n * @returns A part that defines checkbox styling for the Element AG Grid theme.\n */\nexport const elementCheckboxStyle: Part = createPart({\n css: `\n.ag-checkbox-input-wrapper:not(.ag-checked):not(.ag-indeterminate):hover {\n border-color: var(--element-action-secondary-border-hover);\n background: var(--element-action-secondary-hover);\n}\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { elementCheckedImageShape } from '@siemens/element-ng/icon';\nimport { Part, ThemeDefaultParams, createPart } from 'ag-grid-community';\n\n/**\n * Creates a comprehensive color scheme part for the Element AG Grid theme.\n *\n * This part applies Element design system colors and styling to all AG Grid components,\n * including:\n * - Typography (fonts, weights, sizes)\n * - Base colors (backgrounds, borders, foreground)\n * - Interactive elements (buttons, inputs, icons)\n * - Cell and row styling (hover, selection, borders)\n * - Header components\n * - Checkboxes and form controls\n * - Menus, dialogs, and overlays\n * - Tooltips and tabs\n * - Charts and visualizations\n *\n * All colors are mapped to CSS custom properties from the Element design system,\n * ensuring consistency with other Element components and automatic theme support.\n *\n * @returns A part that defines the complete color scheme for the Element AG Grid theme.\n */\nexport const elementColorScheme: Part = createPart({\n feature: 'colorScheme',\n params: {\n // Typography\n buttonFontWeight: '600',\n cellFontFamily: 'var(--element-body-font-family)',\n fontFamily: 'var(--element-body-font-family)',\n fontSize: '14px',\n headerFontWeight: '600',\n\n // Base colors:\n accentColor: 'var(--element-focus-default)',\n backgroundColor: 'var(--element-base-1)',\n borderColor: 'var(--element-ui-4)',\n foregroundColor: 'var(--element-text-primary)',\n invalidColor: 'var(--element-status-danger)',\n subtleTextColor: 'var(--element-text-secondary)',\n\n // Button styles\n buttonActiveBackgroundColor: 'var(--element-action-secondary-hover)',\n buttonActiveBorder: {\n color: 'var(--element-action-secondary-hover)'\n },\n buttonActiveTextColor: 'var(--element-action-secondary-text-hover)',\n buttonBackgroundColor: 'var(--element-action-secondary)',\n buttonBorder: {\n color: 'var(--element-action-secondary-border)'\n },\n buttonTextColor: 'var(--element-action-secondary-text)',\n\n buttonHoverBackgroundColor: 'var(--element-action-secondary-hover)',\n buttonHoverBorder: {\n color: 'var(--element-action-secondary-border-hover)'\n },\n buttonHoverTextColor: 'var(--element-action-secondary-text-hover)',\n\n buttonDisabledBackgroundColor: 'var(--element-action-secondary)',\n buttonDisabledTextColor: 'var(--element-text-disabled)',\n buttonDisabledBorder: {\n color: 'var(--element-ui-4)'\n },\n\n // Advanced filter builder styles\n advancedFilterBuilderButtonBarBorder: {\n color: 'var(--element-ui-4)'\n },\n advancedFilterBuilderJoinPillColor: 'var(--element-base-danger)',\n advancedFilterBuilderColumnPillColor: 'var(--element-base-success)',\n advancedFilterBuilderOptionPillColor: 'var(--element-base-warning)',\n advancedFilterBuilderValuePillColor: 'var(--element-base-information)',\n\n // Cell styles\n cellEditingBorder: {\n color: 'var(--element-action-primary)'\n },\n cellTextColor: 'var(--element-text-primary)',\n\n // Column styles\n columnBorder: {\n color: 'var(--element-action-secondary)'\n },\n columnDropCellBackgroundColor: 'var(--element-base-1)',\n columnDropCellBorder: {\n color: 'var(--element-action-secondary)'\n },\n columnDropCellDragHandleColor: 'var(--element-text-primary)',\n columnDropCellTextColor: 'var(--element-text-primary)',\n columnHoverColor: 'var(--element-base-1-hover)',\n\n // Row styles\n oddRowBackgroundColor: 'var(--element-base-1)',\n rowBorder: {\n color: 'var(--element-ui-4)'\n },\n rowHoverColor: 'var(--element-base-1-hover)',\n rowLoadingSkeletonEffectColor: 'var(--element-base-1)',\n selectedRowBackgroundColor: 'var(--element-base-1-selected)',\n\n // Dialog and footer styles\n footerRowBorder: {\n color: 'var(--element-ui-4)'\n },\n dialogBorder: {\n color: 'var(--element-ui-4)'\n },\n\n // Checkbox styles\n checkboxBorderRadius: '2px',\n checkboxBorderWidth: '1px',\n checkboxCheckedBackgroundColor: 'var(--element-action-primary)',\n checkboxCheckedBorderColor: 'var(--element-action-primary)',\n checkboxCheckedShapeColor: 'var(--element-action-primary-text)',\n checkboxCheckedShapeImage: {\n url: elementCheckedImageShape\n },\n checkboxIndeterminateBackgroundColor: 'var(--element-action-primary)',\n checkboxIndeterminateBorderColor: 'var(--element-action-primary)',\n checkboxIndeterminateShapeColor: 'var(--element-base-1)',\n checkboxUncheckedBackgroundColor: 'var(--element-base-1)',\n checkboxUncheckedBorderColor: 'var(--element-ui-1)',\n\n // Header styles\n headerBackgroundColor: 'var(--element-base-1)',\n headerCellHoverBackgroundColor: 'var(--element-base-1-hover)',\n headerColumnBorder: {\n color: 'var(--element-action-secondary)'\n },\n headerColumnResizeHandleColor: 'var(--element-ui-4)',\n headerRowBorder: {\n color: 'var(--element-ui-4)'\n },\n\n // Input styles\n inputBackgroundColor: 'var(--element-base-1)',\n inputBorder: {\n color: 'var(--element-ui-2)'\n },\n inputBorderRadius: '2px',\n inputDisabledBackgroundColor: 'var(--element-base-1)',\n inputDisabledBorder: {\n color: 'var(--element-ui-3)'\n },\n inputDisabledTextColor: 'var(--element-text-disabled)',\n inputFocusBorder: {\n color: 'var(--element-focus-default)'\n },\n inputFocusShadow: false,\n inputIconColor: 'var(--element-ui-1)',\n inputInvalidBorder: {\n color: 'var(--element-status-danger)'\n },\n inputTextColor: 'var(--element-text-primary)',\n\n // Icon styles\n iconButtonActiveBackgroundColor: 'var(--element-base-1-selected)',\n iconButtonActiveColor: 'var(--element-action-primary-hover)',\n iconButtonActiveIndicatorColor: 'var(--element-action-primary-hover)',\n iconButtonBackgroundColor: 'var(--element-action-secondary)',\n iconButtonColor: 'var(--element-text-primary)',\n iconButtonHoverBackgroundColor: 'var(--element-base-1-hover)',\n iconButtonHoverColor: 'var(--element-text-primary)',\n iconColor: 'var(--element-text-primary)',\n iconSize: '18px',\n\n // Menu styles\n menuBackgroundColor: 'var(--element-base-1)',\n menuBorder: false,\n menuShadow:\n '0 0 8px var(--element-box-shadow-color-1), 0 8px 8px var(--element-box-shadow-color-2)',\n\n // Pinning styles\n pinnedColumnBorder: {\n color: 'var(--element-base-1-selected)'\n },\n pinnedRowBorder: {\n color: 'var(--element-base-1-selected)'\n },\n\n // Drag and drop styles\n dragAndDropImageBackgroundColor: 'var(--element-base-3)',\n dragAndDropImageBorder: false,\n dragAndDropImageShadow:\n '0 0 8px var(--element-box-shadow-color-1), 0 8px 8px var(--element-box-shadow-color-2)',\n dragHandleColor: 'var(--element-text-primary)',\n\n // Range selection styles\n rangeHeaderHighlightColor: 'var(--element-base-1)',\n rangeSelectionBackgroundColor: 'var(--element-base-1-selected)',\n rangeSelectionBorderColor: 'var(--element-action-primary-hover)',\n rangeSelectionHighlightColor: 'var(--element-base-1-selected)',\n\n // Sidebar styles\n sideBarBackgroundColor: 'var(--element-base-1)',\n sidePanelBorder: {\n color: 'var(--element-ui-4)'\n },\n\n // Side button styles\n sideButtonBackgroundColor: 'var(--element-action-secondary)',\n sideButtonBarBackgroundColor: 'var(--element-base-1)',\n sideButtonHoverBackgroundColor: 'var(--element-base-1-hover)',\n sideButtonSelectedBackgroundColor: 'var(--element-base-1-selected)',\n sideButtonSelectedBorder: 'var(--element-action-secondary-border)',\n sideButtonSelectedUnderlineColor: 'var(--element-base-1-selected)',\n\n // Status bar styles\n statusBarLabelColor: 'var(--element-text-primary)',\n statusBarValueColor: 'var(--element-text-primary)',\n\n // Select cell styles\n selectCellBorder: {\n color: 'var(--element-ui-4)'\n },\n\n // Toggle button styles - matching Element switch design\n toggleButtonHeight: '20px',\n toggleButtonOffBackgroundColor: 'var(--element-ui-4)',\n toggleButtonOnBackgroundColor: 'var(--element-ui-0)',\n toggleButtonSwitchBackgroundColor: 'var(--element-ui-2)',\n toggleButtonSwitchInset: '4px',\n toggleButtonWidth: '40px',\n\n // Value change styles\n valueChangeDeltaDownColor: 'var(--element-status-danger)',\n valueChangeDeltaUpColor: 'var(--element-status-success)',\n valueChangeValueHighlightBackgroundColor: 'var(--element-base-1-selected)',\n\n // Tooltip styles\n tooltipBackgroundColor: 'var(--element-base-translucent-2)',\n tooltipBorder: false,\n tooltipTextColor: 'var(--element-text-inverse)',\n\n // Tab styles\n tabBackgroundColor: 'var(--element-action-secondary)',\n tabBarBackgroundColor: 'var(--element-base-1)',\n tabBarBorder: {\n color: 'var(--element-ui-4)'\n },\n tabHoverBackgroundColor: 'var(--element-action-secondary)',\n tabSelectedTextColor: 'var(--element-action-primary)',\n tabSelectedUnderlineColor: 'var(--element-action-secondary)',\n\n // Chart styles\n chartMenuLabelColor: 'var(--element-text-primary)',\n\n // Misc styles\n focusShadow: false,\n wrapperBorder: false\n } satisfies Partial<ThemeDefaultParams>\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n elementBusy,\n elementCancel,\n elementCopy,\n elementCut,\n elementDown2,\n elementDownload,\n elementEdit,\n elementFilter,\n elementHide,\n elementJumpToListItem,\n elementLayoutPane3Alt,\n elementLeft2,\n elementLeft4,\n elementLink,\n elementLinkBroken,\n elementMenu,\n elementMinus,\n elementMove,\n elementOk,\n elementOptionsVertical,\n elementOutOfService,\n elementPalette,\n elementPaste,\n elementPin,\n elementPinch,\n elementPlus,\n elementReport,\n elementRight2,\n elementRight4,\n elementShow,\n elementSortDown,\n elementSortUp,\n elementSum,\n elementUp2,\n elementZoom\n} from '@siemens/element-icons';\nimport { iconOverrides } from 'ag-grid-community';\n\n/**\n * Utility function to convert data URI icon map to AG Grid icon format.\n * Extracts base64 SVG data from data URIs.\n *\n * @param icons - Record of icon names to data URI strings\n * @returns Record of icon names to AG Grid icon objects with SVG data\n */\nconst createIconMap = (icons: Record<string, string>): Record<string, { svg: string }> =>\n Object.fromEntries(\n Object.entries(icons).map(([key, dataUri]) => [key, { svg: dataUri.split(',')[1] }])\n );\n\n/**\n * Creates an icon overrides part for the Element AG Grid theme.\n * This part allows customization of AG Grid icons with Element design system icons.\n * Icons can be added to the icons map as needed.\n *\n * @returns A part that defines icon overrides for the Element AG Grid theme.\n */\nexport const elementIconOverrides = iconOverrides({\n type: 'image',\n mask: true,\n icons: createIconMap({\n aggregation: elementSum,\n arrows: elementMove,\n asc: elementSortUp,\n cancel: elementCancel,\n chart: elementReport,\n 'chevron-down': elementDown2,\n 'chevron-left': elementLeft2,\n 'chevron-right': elementRight2,\n 'chevron-up': elementUp2,\n 'color-picker': elementPalette,\n columns: elementLayoutPane3Alt,\n contracted: elementRight2,\n copy: elementCopy,\n cross: elementCancel,\n cut: elementCut,\n desc: elementSortDown,\n edit: elementEdit,\n expanded: elementLeft2,\n 'eye-slash': elementHide,\n eye: elementShow,\n filter: elementFilter,\n group: elementJumpToListItem,\n left: elementLeft4,\n linked: elementLink,\n loading: elementBusy,\n maximize: elementZoom,\n menu: elementOptionsVertical,\n 'menu-alt': elementOptionsVertical,\n minimize: elementPinch,\n minus: elementMinus,\n next: elementRight2,\n 'not-allowed': elementOutOfService,\n paste: elementPaste,\n pin: elementPin,\n plus: elementPlus,\n previous: elementLeft2,\n right: elementRight4,\n save: elementDownload,\n 'small-down': elementDown2,\n 'small-left': elementLeft2,\n 'small-right': elementRight2,\n 'small-up': elementUp2,\n tick: elementOk,\n 'tree-closed': elementRight2,\n 'tree-indeterminate': elementMinus,\n 'tree-open': elementDown2,\n unlinked: elementLinkBroken,\n up: elementSortUp,\n grip: elementMenu\n })\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a pagination style part for the Element AG Grid theme.\n * This part applies font weight styling to pagination summary numbers.\n *\n * @returns A part that defines pagination styling for the Element AG Grid theme.\n */\nexport const elementPaginationStyle: Part = createPart({\n css: `\n .ag-paging-row-summary-panel-number {\n font-weight: 600;\n }\n `\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a pinning style part for the Element AG Grid theme.\n * This part applies box shadow styling to floating top and bottom rows.\n *\n * @returns A part that defines pinning styles for the Element AG Grid theme.\n */\nexport const elementPinningStyle: Part = createPart({\n css: `\n .ag-floating-top {\n box-shadow:\n 0 0 8px var(--element-box-shadow-color-1),\n 0 8px 8px var(--element-box-shadow-color-2);\n z-index: 1;\n position: relative;\n }\n\n .ag-floating-bottom {\n box-shadow:\n 0 0 8px var(--element-box-shadow-color-1),\n 0 -8px 8px var(--element-box-shadow-color-2);\n z-index: 1;\n position: relative;\n }\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a radio button style part for the Element AG Grid theme.\n * This part applies Element design system styling to radio buttons including colors,\n * hover states, checked states, and disabled states.\n *\n * @returns A part that defines radio button styling for the Element AG Grid theme.\n */\nexport const elementRadioStyle: Part = createPart({\n css: `\n .ag-radio-button-input-wrapper {\n background-color: var(--element-ui-5);\n border: 1px solid var(--element-ui-1);\n}\n\n.ag-radio-button-input-wrapper:hover {\n border-color: var(--element-action-secondary-border-hover);\n background: var(--element-action-secondary-hover);\n}\n\n.ag-radio-button-input-wrapper.ag-checked {\n border-color: var(--element-ui-0);\n background-color: var(--element-ui-5);\n}\n\n.ag-radio-button-input-wrapper.ag-checked::after {\n background-color: var(--element-ui-0);\n mask-image: none;\n inset: 4px;\n border-radius: 50%;\n}\n\n.ag-radio-button-input-wrapper.ag-checked:hover {\n border-color: var(--element-ui-0-hover);\n}\n\n.ag-radio-button-input-wrapper.ag-checked:hover::after {\n background-color: var(--element-ui-0-hover);\n}\n\n.ag-radio-button-input-wrapper.ag-disabled {\n border-color: var(--element-ui-3);\n background-color: var(--element-ui-5);\n opacity: 1;\n}\n\n.ag-radio-button-input-wrapper.ag-checked.ag-disabled {\n border-color: var(--element-ui-3);\n}\n\n.ag-radio-button-input-wrapper.ag-checked.ag-disabled::after {\n background-color: var(--element-ui-3);\n}\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a skeleton style part for the Element AG Grid theme.\n * This part applies Element design system shimmer animation to skeleton loading effects\n * to match the Element skeleton component design.\n *\n * @returns A part that defines skeleton loading styles for the Element AG Grid theme.\n */\nexport const elementSkeletonStyle: Part = createPart({\n css: `\n @keyframes shimmer {\n to {\n background-position-x: -100%;\n }\n }\n\n .ag-skeleton-effect {\n background: linear-gradient(\n 90deg,\n var(--element-base-1-hover) 0%,\n var(--element-base-1-selected) 25%,\n var(--element-base-1-hover) 50%\n );\n background-size: 200% 100%;\n background-position-x: 100%;\n animation: shimmer calc(1.6s * var(--element-animations-enabled, 1)) ease-in-out infinite;\n }\n `\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a text filter style part for the Element AG Grid theme.\n * This part applies Element design system styling to text filter search inputs,\n * including border width and background color customization.\n *\n * @returns A part that defines text filter search input styling for the Element AG Grid theme.\n */\nexport const elementTextFilterStyle: Part = createPart({\n css: `\n .ag-column-select-header-filter-wrapper,\n.ag-filter-toolpanel-search,\n.ag-mini-filter,\n.ag-filter-filter,\n.ag-filter-add-select {\n .ag-text-field-input[type='text'] {\n border-width: 0;\n background-color: var(--element-base-4);\n }\n}\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a toggle button style part for the Element AG Grid theme.\n * This part applies Element design system switch styling including hover states,\n * transitions, and proper knob positioning to match the Element switch component.\n *\n * @returns A part that defines toggle button styling for the Element AG Grid theme.\n */\nexport const elementToggleStyle: Part = createPart({\n css: `\n .ag-toggle-button-input-wrapper {\n transition: background-color 0.4s;\n }\n\n .ag-toggle-button-input-wrapper::before {\n transition: left 0.4s;\n }\n\n .ag-toggle-button-input-wrapper:not(.ag-checked):hover {\n background-color: var(--element-ui-4);\n }\n\n .ag-toggle-button-input-wrapper.ag-checked:hover {\n background-color: var(--element-ui-0-hover);\n }\n\n .ag-toggle-button-input-wrapper.ag-checked::before {\n background-color: var(--element-ui-5);\n }\n `\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './checkbox-style.part';\nexport * from './color-scheme.part';\nexport * from './icon-overrides.part';\nexport * from './pagination-style.part';\nexport * from './pinning-style.part';\nexport * from './radio-style.part';\nexport * from './skeleton-style.part';\nexport * from './text-filter-style.part';\nexport * from './toggle-style.part';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { iconSetAlpine, Theme, themeAlpine } from 'ag-grid-community';\n\nimport {\n elementCheckboxStyle,\n elementColorScheme,\n elementIconOverrides,\n elementPaginationStyle,\n elementPinningStyle,\n elementRadioStyle,\n elementSkeletonStyle,\n elementTextFilterStyle,\n elementToggleStyle\n} from './parts';\n\n/**\n * Base theme combining all Element design system parts with AG Grid Alpine theme.\n * This theme includes custom styling for checkboxes, radios, toggles, pagination,\n * pinning, skeleton loaders, text filters, icons, and color scheme.\n * @internal\n */\nconst elementBaseTheme: Theme = themeAlpine\n .withPart(iconSetAlpine)\n .withPart(elementCheckboxStyle)\n .withPart(elementRadioStyle)\n .withPart(elementToggleStyle)\n .withPart(elementPaginationStyle)\n .withPart(elementPinningStyle)\n .withPart(elementSkeletonStyle)\n .withPart(elementTextFilterStyle)\n .withPart(elementIconOverrides)\n .withPart(elementColorScheme);\n\n/**\n * Standard density Element AG Grid theme.\n * Provides balanced spacing suitable for most use cases.\n * - Row height: 42px\n * - Header height: 48px\n * - Spacing: 8px\n */\nexport const elementTheme: Theme = elementBaseTheme.withParams({\n rowHeight: '42px',\n headerHeight: '48px',\n spacing: '8px'\n});\n\n/**\n * Compact density Element AG Grid theme.\n * Optimized for displaying more data in limited space.\n * - Row height: 28px\n * - Header height: 32px\n * - Spacing: 4px\n */\nexport const elementThemeCompact: Theme = elementBaseTheme.withParams({\n rowHeight: '28px',\n headerHeight: '32px',\n spacing: '4px'\n});\n\n/**\n * Comfort density Element AG Grid theme.\n * Provides generous spacing for enhanced readability and touch interactions.\n * - Row height: 84px\n * - Header height: 96px\n * - Spacing: 12px\n */\nexport const elementThemeComfort: Theme = elementBaseTheme.withParams({\n rowHeight: '84px',\n headerHeight: '96px',\n spacing: '12px'\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { GridOptions, provideGlobalGridOptions, Theme } from 'ag-grid-community';\n\nimport { AgDateInputComponent, AgNoRowsOverlayComponent } from './components';\nimport { elementTheme, elementThemeCompact, elementThemeComfort } from './themes';\n\n/**\n * Default AG Grid options for Element theme.\n * Includes custom components for date input and empty state overlay.\n * @internal\n */\nconst ELEMENT_AG_GRID_OPTIONS: GridOptions = {\n tooltipShowDelay: 200,\n components: {\n agDateInput: AgDateInputComponent,\n agNoRowsOverlay: AgNoRowsOverlayComponent\n }\n};\n\n/**\n * Theme mapping by density variant.\n * @internal\n */\nconst THEME_BY_DENSITY = new Map<string, Theme>([\n ['compact', elementThemeCompact],\n ['comfort', elementThemeComfort],\n ['standard', elementTheme]\n]);\n\n/**\n * Provides AG Grid global configuration with Element design system theme.\n *\n * This provider configures AG Grid with the Element theme, custom components,\n * and density-specific styling. Use it in your application providers.\n *\n * @param density - The density variant to use. Options:\n * - 'compact': Minimal spacing (28px row height, 32px header height, 4px spacing)\n * - 'standard': Default spacing (42px row height, 48px header height, 8px spacing)\n * - 'comfort': Generous spacing (84px row height, 96px header height, 12px spacing)\n * @param gridOptions - Optional AG Grid options to merge with Element defaults.\n * These options will override Element defaults if specified.\n * @returns Environment providers for dependency injection\n *\n * @example\n * ```typescript\n * // In app.config.ts\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideSiAgGridConfig()\n * ]\n * };\n *\n * // With custom options\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideSiAgGridConfig('compact', {\n * rowHeight: 30,\n * suppressMenuHide: true\n * })\n * ]\n * };\n * ```\n */\nexport const provideSiAgGridConfig = (\n density: 'compact' | 'comfort' | 'standard' = 'standard',\n gridOptions?: GridOptions\n): EnvironmentProviders => {\n return makeEnvironmentProviders([\n {\n provide: 'ag-grid-options',\n useValue: provideGlobalGridOptions({\n ...ELEMENT_AG_GRID_OPTIONS,\n ...gridOptions,\n theme: THEME_BY_DENSITY.get(density)\n })\n }\n ]);\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nexport * from './components';\nexport * from './provider';\nexport * from './themes';\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-ag-grid.mjs","sources":["../../../../projects/element-ng/ag-grid/components/ag-date-input.component.ts","../../../../projects/element-ng/ag-grid/components/ag-no-rows-overlay.component.ts","../../../../projects/element-ng/ag-grid/components/index.ts","../../../../projects/element-ng/ag-grid/parts/checkbox-style.part.ts","../../../../projects/element-ng/ag-grid/parts/color-scheme.part.ts","../../../../projects/element-ng/ag-grid/parts/icon-overrides.part.ts","../../../../projects/element-ng/ag-grid/parts/pagination-style.part.ts","../../../../projects/element-ng/ag-grid/parts/pinning-style.part.ts","../../../../projects/element-ng/ag-grid/parts/radio-style.part.ts","../../../../projects/element-ng/ag-grid/parts/skeleton-style.part.ts","../../../../projects/element-ng/ag-grid/parts/text-filter-style.part.ts","../../../../projects/element-ng/ag-grid/parts/toggle-style.part.ts","../../../../projects/element-ng/ag-grid/parts/index.ts","../../../../projects/element-ng/ag-grid/themes.ts","../../../../projects/element-ng/ag-grid/provider.ts","../../../../projects/element-ng/ag-grid/index.ts","../../../../projects/element-ng/ag-grid/siemens-element-ng-ag-grid.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SiCalendarButtonComponent, SiDatepickerDirective } from '@siemens/element-ng/datepicker';\nimport { IDateComp, IDateParams } from 'ag-grid-community';\n\n/**\n * Custom AG Grid date component using Element datepicker.\n * This component replaces the native HTML date input with the Element design system datepicker.\n */\n@Component({\n selector: 'si-ag-date-input',\n imports: [FormsModule, SiDatepickerDirective, SiCalendarButtonComponent],\n template: `\n <si-calendar-button class=\"w-100\">\n <input\n type=\"text\"\n class=\"form-control\"\n siDatepicker\n [autoClose]=\"true\"\n [(ngModel)]=\"date\"\n (ngModelChange)=\"onDateChange()\"\n />\n </si-calendar-button>\n `,\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class AgDateInputComponent implements IDateComp, OnDestroy {\n private elementRef = inject(ElementRef);\n\n /**\n * The selected date value.\n */\n public date: Date | undefined = undefined;\n\n /**\n * AG Grid date filter parameters.\n * @internal\n */\n private params!: IDateParams;\n\n /**\n * Document click event listener for calendar overlay.\n * @internal\n */\n private documentClickListener?: (event: MouseEvent) => void;\n\n /**\n * Notifies AG Grid when the date value changes.\n * @internal\n */\n onDateChange(): void {\n if (this.params) {\n this.params.onDateChanged();\n }\n }\n\n /**\n * Lifecycle hook called after the component GUI is attached.\n * Sets up event listeners to prevent filter popup from closing when interacting with calendar.\n */\n afterGuiAttached(): void {\n // Remove any existing listener to prevent duplicates\n if (this.documentClickListener) {\n document.removeEventListener('mousedown', this.documentClickListener, true);\n }\n\n // Intercept document click events to keep the filter open when clicking the calendar\n this.documentClickListener = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n const calendarOverlay = target.closest('si-datepicker, .cdk-overlay-pane');\n\n if (calendarOverlay) {\n event.stopPropagation();\n }\n };\n document.addEventListener('mousedown', this.documentClickListener, true);\n }\n\n ngOnDestroy(): void {\n if (this.documentClickListener) {\n document.removeEventListener('mousedown', this.documentClickListener, true);\n }\n }\n\n agInit(params: IDateParams): void {\n this.params = params;\n }\n\n getDate(): Date | null {\n return this.date ?? null;\n }\n\n getGui(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n setDate(date: Date | null): void {\n this.date = date ?? undefined;\n if (this.params) {\n this.params.onDateChanged();\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { ChangeDetectionStrategy, Component, signal } from '@angular/core';\nimport { SiEmptyStateComponent } from '@siemens/element-ng/empty-state';\nimport { INoRowsOverlayParams } from 'ag-grid-community';\n\n/**\n * Custom AG Grid no rows overlay component using Element Empty State.\n * This component is displayed when the grid has no data to show.\n *\n * @example\n * Using with custom parameters\n * ```typescript\n * <ag-grid-angular\n * [noRowsOverlayComponent]=\"AgNoRowsOverlayComponent\"\n * [noRowsOverlayComponentParams]=\"{\n * icon: 'element-technical-search',\n * heading: 'No results found',\n * content: 'Try adjusting your filters.'\n * }\"\n * />\n * ```\n */\n@Component({\n selector: 'si-ag-no-rows-overlay',\n imports: [SiEmptyStateComponent],\n template: ` <si-empty-state [icon]=\"icon()\" [heading]=\"heading()\" [content]=\"content()\" /> `,\n styles: `\n :host {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n }\n `,\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class AgNoRowsOverlayComponent {\n /**\n * Icon to display in the empty state.\n *\n */\n protected readonly icon = signal<string>('');\n\n /**\n * Heading text for the empty state.\n *\n */\n protected readonly heading = signal<string>('');\n\n /**\n * Description text for the empty state.\n *\n */\n protected readonly content = signal<string | undefined>(undefined);\n\n agInit(params: INoRowsOverlayParams & { icon: string; heading: string; content?: string }): void {\n this.icon.set(params.icon);\n this.heading.set(params.heading);\n this.content.set(params.content);\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './ag-date-input.component';\nexport * from './ag-no-rows-overlay.component';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a checkbox style part for the Element AG Grid theme.\n * This part overrides the unchecked checkbox hover state to match Element design system.\n *\n * @returns A part that defines checkbox styling for the Element AG Grid theme.\n */\nexport const elementCheckboxStyle: Part = createPart({\n css: `\n.ag-checkbox-input-wrapper:not(.ag-checked):not(.ag-indeterminate):hover {\n border-color: var(--element-action-secondary-border-hover);\n background: var(--element-action-secondary-hover);\n}\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { elementCheckedImageShape } from '@siemens/element-ng/icon';\nimport { Part, ThemeDefaultParams, createPart } from 'ag-grid-community';\n\n/**\n * Creates a comprehensive color scheme part for the Element AG Grid theme.\n *\n * This part applies Element design system colors and styling to all AG Grid components,\n * including:\n * - Typography (fonts, weights, sizes)\n * - Base colors (backgrounds, borders, foreground)\n * - Interactive elements (buttons, inputs, icons)\n * - Cell and row styling (hover, selection, borders)\n * - Header components\n * - Checkboxes and form controls\n * - Menus, dialogs, and overlays\n * - Tooltips and tabs\n * - Charts and visualizations\n *\n * All colors are mapped to CSS custom properties from the Element design system,\n * ensuring consistency with other Element components and automatic theme support.\n *\n * @returns A part that defines the complete color scheme for the Element AG Grid theme.\n */\nexport const elementColorScheme: Part = createPart({\n feature: 'colorScheme',\n params: {\n // Typography\n buttonFontWeight: '600',\n cellFontFamily: 'var(--element-body-font-family)',\n fontFamily: 'var(--element-body-font-family)',\n fontSize: '14px',\n headerFontWeight: '600',\n\n // Base colors:\n accentColor: 'var(--element-focus-default)',\n backgroundColor: 'var(--element-base-1)',\n borderColor: 'var(--element-ui-4)',\n foregroundColor: 'var(--element-text-primary)',\n invalidColor: 'var(--element-status-danger)',\n subtleTextColor: 'var(--element-text-secondary)',\n\n // Button styles\n buttonActiveBackgroundColor: 'var(--element-action-secondary-hover)',\n buttonActiveBorder: {\n color: 'var(--element-action-secondary-hover)'\n },\n buttonActiveTextColor: 'var(--element-action-secondary-text-hover)',\n buttonBackgroundColor: 'var(--element-action-secondary)',\n buttonBorder: {\n color: 'var(--element-action-secondary-border)'\n },\n buttonTextColor: 'var(--element-action-secondary-text)',\n\n buttonHoverBackgroundColor: 'var(--element-action-secondary-hover)',\n buttonHoverBorder: {\n color: 'var(--element-action-secondary-border-hover)'\n },\n buttonHoverTextColor: 'var(--element-action-secondary-text-hover)',\n\n buttonDisabledBackgroundColor: 'var(--element-action-secondary)',\n buttonDisabledTextColor: 'var(--element-text-disabled)',\n buttonDisabledBorder: {\n color: 'var(--element-ui-4)'\n },\n\n // Advanced filter builder styles\n advancedFilterBuilderButtonBarBorder: {\n color: 'var(--element-ui-4)'\n },\n advancedFilterBuilderJoinPillColor: 'var(--element-base-danger)',\n advancedFilterBuilderColumnPillColor: 'var(--element-base-success)',\n advancedFilterBuilderOptionPillColor: 'var(--element-base-warning)',\n advancedFilterBuilderValuePillColor: 'var(--element-base-information)',\n\n // Cell styles\n cellEditingBorder: {\n color: 'var(--element-action-primary)'\n },\n cellTextColor: 'var(--element-text-primary)',\n\n // Column styles\n columnBorder: {\n color: 'var(--element-action-secondary)'\n },\n columnDropCellBackgroundColor: 'var(--element-base-1)',\n columnDropCellBorder: {\n color: 'var(--element-action-secondary)'\n },\n columnDropCellDragHandleColor: 'var(--element-text-primary)',\n columnDropCellTextColor: 'var(--element-text-primary)',\n columnHoverColor: 'var(--element-base-1-hover)',\n\n // Row styles\n oddRowBackgroundColor: 'var(--element-base-1)',\n rowBorder: {\n color: 'var(--element-ui-4)'\n },\n rowHoverColor: 'var(--element-base-1-hover)',\n rowLoadingSkeletonEffectColor: 'var(--element-base-1)',\n selectedRowBackgroundColor: 'var(--element-base-1-selected)',\n\n // Dialog and footer styles\n footerRowBorder: {\n color: 'var(--element-ui-4)'\n },\n dialogBorder: {\n color: 'var(--element-ui-4)'\n },\n\n // Checkbox styles\n checkboxBorderRadius: '2px',\n checkboxBorderWidth: '1px',\n checkboxCheckedBackgroundColor: 'var(--element-action-primary)',\n checkboxCheckedBorderColor: 'var(--element-action-primary)',\n checkboxCheckedShapeColor: 'var(--element-action-primary-text)',\n checkboxCheckedShapeImage: {\n url: elementCheckedImageShape\n },\n checkboxIndeterminateBackgroundColor: 'var(--element-action-primary)',\n checkboxIndeterminateBorderColor: 'var(--element-action-primary)',\n checkboxIndeterminateShapeColor: 'var(--element-base-1)',\n checkboxUncheckedBackgroundColor: 'var(--element-base-1)',\n checkboxUncheckedBorderColor: 'var(--element-ui-1)',\n\n // Header styles\n headerBackgroundColor: 'var(--element-base-1)',\n headerCellHoverBackgroundColor: 'var(--element-base-1-hover)',\n headerColumnBorder: {\n color: 'var(--element-action-secondary)'\n },\n headerColumnResizeHandleColor: 'var(--element-ui-4)',\n headerRowBorder: {\n color: 'var(--element-ui-4)'\n },\n\n // Input styles\n inputBackgroundColor: 'var(--element-base-1)',\n inputBorder: {\n color: 'var(--element-ui-2)'\n },\n inputBorderRadius: '2px',\n inputDisabledBackgroundColor: 'var(--element-base-1)',\n inputDisabledBorder: {\n color: 'var(--element-ui-3)'\n },\n inputDisabledTextColor: 'var(--element-text-disabled)',\n inputFocusBorder: {\n color: 'var(--element-focus-default)'\n },\n inputFocusShadow: false,\n inputIconColor: 'var(--element-ui-1)',\n inputInvalidBorder: {\n color: 'var(--element-status-danger)'\n },\n inputTextColor: 'var(--element-text-primary)',\n\n // Icon styles\n iconButtonActiveBackgroundColor: 'var(--element-base-1-selected)',\n iconButtonActiveColor: 'var(--element-action-primary-hover)',\n iconButtonActiveIndicatorColor: 'var(--element-action-primary-hover)',\n iconButtonBackgroundColor: 'var(--element-action-secondary)',\n iconButtonColor: 'var(--element-text-primary)',\n iconButtonHoverBackgroundColor: 'var(--element-base-1-hover)',\n iconButtonHoverColor: 'var(--element-text-primary)',\n iconColor: 'var(--element-text-primary)',\n iconSize: '18px',\n\n // Menu styles\n menuBackgroundColor: 'var(--element-base-1)',\n menuBorder: false,\n menuShadow:\n '0 0 8px var(--element-box-shadow-color-1), 0 8px 8px var(--element-box-shadow-color-2)',\n\n // Pinning styles\n pinnedColumnBorder: {\n color: 'var(--element-base-1-selected)'\n },\n pinnedRowBorder: {\n color: 'var(--element-base-1-selected)'\n },\n\n // Drag and drop styles\n dragAndDropImageBackgroundColor: 'var(--element-base-3)',\n dragAndDropImageBorder: false,\n dragAndDropImageShadow:\n '0 0 8px var(--element-box-shadow-color-1), 0 8px 8px var(--element-box-shadow-color-2)',\n dragHandleColor: 'var(--element-text-primary)',\n\n // Range selection styles\n rangeHeaderHighlightColor: 'var(--element-base-1)',\n rangeSelectionBackgroundColor: 'var(--element-base-1-selected)',\n rangeSelectionBorderColor: 'var(--element-action-primary-hover)',\n rangeSelectionHighlightColor: 'var(--element-base-1-selected)',\n\n // Sidebar styles\n sideBarBackgroundColor: 'var(--element-base-1)',\n sidePanelBorder: {\n color: 'var(--element-ui-4)'\n },\n\n // Side button styles\n sideButtonBackgroundColor: 'var(--element-action-secondary)',\n sideButtonBarBackgroundColor: 'var(--element-base-1)',\n sideButtonHoverBackgroundColor: 'var(--element-base-1-hover)',\n sideButtonSelectedBackgroundColor: 'var(--element-base-1-selected)',\n sideButtonSelectedBorder: 'var(--element-action-secondary-border)',\n sideButtonSelectedUnderlineColor: 'var(--element-base-1-selected)',\n\n // Status bar styles\n statusBarLabelColor: 'var(--element-text-primary)',\n statusBarValueColor: 'var(--element-text-primary)',\n\n // Select cell styles\n selectCellBorder: {\n color: 'var(--element-ui-4)'\n },\n\n // Toggle button styles - matching Element switch design\n toggleButtonHeight: '20px',\n toggleButtonOffBackgroundColor: 'var(--element-ui-4)',\n toggleButtonOnBackgroundColor: 'var(--element-ui-0)',\n toggleButtonSwitchBackgroundColor: 'var(--element-ui-2)',\n toggleButtonSwitchInset: '4px',\n toggleButtonWidth: '40px',\n\n // Value change styles\n valueChangeDeltaDownColor: 'var(--element-status-danger)',\n valueChangeDeltaUpColor: 'var(--element-status-success)',\n valueChangeValueHighlightBackgroundColor: 'var(--element-base-1-selected)',\n\n // Tooltip styles\n tooltipBackgroundColor: 'var(--element-base-translucent-2)',\n tooltipBorder: false,\n tooltipTextColor: 'var(--element-text-inverse)',\n\n // Tab styles\n tabBackgroundColor: 'var(--element-action-secondary)',\n tabBarBackgroundColor: 'var(--element-base-1)',\n tabBarBorder: {\n color: 'var(--element-ui-4)'\n },\n tabHoverBackgroundColor: 'var(--element-action-secondary)',\n tabSelectedTextColor: 'var(--element-action-primary)',\n tabSelectedUnderlineColor: 'var(--element-action-secondary)',\n\n // Chart styles\n chartMenuLabelColor: 'var(--element-text-primary)',\n\n // Misc styles\n focusShadow: false,\n wrapperBorder: false\n } satisfies Partial<ThemeDefaultParams>\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n elementBusy,\n elementCancel,\n elementCopy,\n elementCut,\n elementDown2,\n elementDownload,\n elementEdit,\n elementFilter,\n elementHide,\n elementJumpToListItem,\n elementLayoutPane3Alt,\n elementLeft2,\n elementLeft4,\n elementLink,\n elementLinkBroken,\n elementMenu,\n elementMinus,\n elementMove,\n elementOk,\n elementOptionsVertical,\n elementOutOfService,\n elementPalette,\n elementPaste,\n elementPin,\n elementPinch,\n elementPlus,\n elementReport,\n elementRight2,\n elementRight4,\n elementShow,\n elementSortDown,\n elementSortUp,\n elementSum,\n elementUp2,\n elementZoom\n} from '@siemens/element-icons';\nimport { iconOverrides } from 'ag-grid-community';\n\n/**\n * Utility function to convert data URI icon map to AG Grid icon format.\n * Extracts base64 SVG data from data URIs.\n *\n * @param icons - Record of icon names to data URI strings\n * @returns Record of icon names to AG Grid icon objects with SVG data\n */\nconst createIconMap = (icons: Record<string, string>): Record<string, { svg: string }> =>\n Object.fromEntries(\n Object.entries(icons).map(([key, dataUri]) => [key, { svg: dataUri.split(',')[1] }])\n );\n\n/**\n * Creates an icon overrides part for the Element AG Grid theme.\n * This part allows customization of AG Grid icons with Element design system icons.\n * Icons can be added to the icons map as needed.\n *\n * @returns A part that defines icon overrides for the Element AG Grid theme.\n */\nexport const elementIconOverrides = iconOverrides({\n type: 'image',\n mask: true,\n icons: createIconMap({\n aggregation: elementSum,\n arrows: elementMove,\n asc: elementSortUp,\n cancel: elementCancel,\n chart: elementReport,\n 'chevron-down': elementDown2,\n 'chevron-left': elementLeft2,\n 'chevron-right': elementRight2,\n 'chevron-up': elementUp2,\n 'color-picker': elementPalette,\n columns: elementLayoutPane3Alt,\n contracted: elementRight2,\n copy: elementCopy,\n cross: elementCancel,\n cut: elementCut,\n desc: elementSortDown,\n edit: elementEdit,\n expanded: elementLeft2,\n 'eye-slash': elementHide,\n eye: elementShow,\n filter: elementFilter,\n group: elementJumpToListItem,\n left: elementLeft4,\n linked: elementLink,\n loading: elementBusy,\n maximize: elementZoom,\n menu: elementOptionsVertical,\n 'menu-alt': elementOptionsVertical,\n minimize: elementPinch,\n minus: elementMinus,\n next: elementRight2,\n 'not-allowed': elementOutOfService,\n paste: elementPaste,\n pin: elementPin,\n plus: elementPlus,\n previous: elementLeft2,\n right: elementRight4,\n save: elementDownload,\n 'small-down': elementDown2,\n 'small-left': elementLeft2,\n 'small-right': elementRight2,\n 'small-up': elementUp2,\n tick: elementOk,\n 'tree-closed': elementRight2,\n 'tree-indeterminate': elementMinus,\n 'tree-open': elementDown2,\n unlinked: elementLinkBroken,\n up: elementSortUp,\n grip: elementMenu\n })\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a pagination style part for the Element AG Grid theme.\n * This part applies font weight styling to pagination summary numbers.\n *\n * @returns A part that defines pagination styling for the Element AG Grid theme.\n */\nexport const elementPaginationStyle: Part = createPart({\n css: `\n .ag-paging-row-summary-panel-number {\n font-weight: 600;\n }\n `\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a pinning style part for the Element AG Grid theme.\n * This part applies box shadow styling to floating top and bottom rows.\n *\n * @returns A part that defines pinning styles for the Element AG Grid theme.\n */\nexport const elementPinningStyle: Part = createPart({\n css: `\n .ag-floating-top {\n box-shadow:\n 0 0 8px var(--element-box-shadow-color-1),\n 0 8px 8px var(--element-box-shadow-color-2);\n z-index: 1;\n position: relative;\n }\n\n .ag-floating-bottom {\n box-shadow:\n 0 0 8px var(--element-box-shadow-color-1),\n 0 -8px 8px var(--element-box-shadow-color-2);\n z-index: 1;\n position: relative;\n }\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a radio button style part for the Element AG Grid theme.\n * This part applies Element design system styling to radio buttons including colors,\n * hover states, checked states, and disabled states.\n *\n * @returns A part that defines radio button styling for the Element AG Grid theme.\n */\nexport const elementRadioStyle: Part = createPart({\n css: `\n .ag-radio-button-input-wrapper {\n background-color: var(--element-ui-5);\n border: 1px solid var(--element-ui-1);\n}\n\n.ag-radio-button-input-wrapper:hover {\n border-color: var(--element-action-secondary-border-hover);\n background: var(--element-action-secondary-hover);\n}\n\n.ag-radio-button-input-wrapper.ag-checked {\n border-color: var(--element-ui-0);\n background-color: var(--element-ui-5);\n}\n\n.ag-radio-button-input-wrapper.ag-checked::after {\n background-color: var(--element-ui-0);\n mask-image: none;\n inset: 4px;\n border-radius: 50%;\n}\n\n.ag-radio-button-input-wrapper.ag-checked:hover {\n border-color: var(--element-ui-0-hover);\n}\n\n.ag-radio-button-input-wrapper.ag-checked:hover::after {\n background-color: var(--element-ui-0-hover);\n}\n\n.ag-radio-button-input-wrapper.ag-disabled {\n border-color: var(--element-ui-3);\n background-color: var(--element-ui-5);\n opacity: 1;\n}\n\n.ag-radio-button-input-wrapper.ag-checked.ag-disabled {\n border-color: var(--element-ui-3);\n}\n\n.ag-radio-button-input-wrapper.ag-checked.ag-disabled::after {\n background-color: var(--element-ui-3);\n}\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a skeleton style part for the Element AG Grid theme.\n * This part applies Element design system shimmer animation to skeleton loading effects\n * to match the Element skeleton component design.\n *\n * @returns A part that defines skeleton loading styles for the Element AG Grid theme.\n */\nexport const elementSkeletonStyle: Part = createPart({\n css: `\n @keyframes shimmer {\n to {\n background-position-x: -100%;\n }\n }\n\n .ag-skeleton-effect {\n background: linear-gradient(\n 90deg,\n var(--element-base-1-hover) 0%,\n var(--element-base-1-selected) 25%,\n var(--element-base-1-hover) 50%\n );\n background-size: 200% 100%;\n background-position-x: 100%;\n animation: shimmer calc(1.6s * var(--element-animations-enabled, 1)) ease-in-out infinite;\n }\n `\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a text filter style part for the Element AG Grid theme.\n * This part applies Element design system styling to text filter search inputs,\n * including border width and background color customization.\n *\n * @returns A part that defines text filter search input styling for the Element AG Grid theme.\n */\nexport const elementTextFilterStyle: Part = createPart({\n css: `\n .ag-column-select-header-filter-wrapper,\n.ag-filter-toolpanel-search,\n.ag-mini-filter,\n.ag-filter-filter,\n.ag-filter-add-select {\n .ag-text-field-input[type='text'] {\n border-width: 0;\n background-color: var(--element-base-4);\n }\n}\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a toggle button style part for the Element AG Grid theme.\n * This part applies Element design system switch styling including hover states,\n * transitions, and proper knob positioning to match the Element switch component.\n *\n * @returns A part that defines toggle button styling for the Element AG Grid theme.\n */\nexport const elementToggleStyle: Part = createPart({\n css: `\n .ag-toggle-button-input-wrapper {\n transition: background-color 0.4s;\n }\n\n .ag-toggle-button-input-wrapper::before {\n transition: left 0.4s;\n }\n\n .ag-toggle-button-input-wrapper:not(.ag-checked):hover {\n background-color: var(--element-ui-4);\n }\n\n .ag-toggle-button-input-wrapper.ag-checked:hover {\n background-color: var(--element-ui-0-hover);\n }\n\n .ag-toggle-button-input-wrapper.ag-checked::before {\n background-color: var(--element-ui-5);\n }\n `\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './checkbox-style.part';\nexport * from './color-scheme.part';\nexport * from './icon-overrides.part';\nexport * from './pagination-style.part';\nexport * from './pinning-style.part';\nexport * from './radio-style.part';\nexport * from './skeleton-style.part';\nexport * from './text-filter-style.part';\nexport * from './toggle-style.part';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { iconSetAlpine, Theme, themeAlpine } from 'ag-grid-community';\n\nimport {\n elementCheckboxStyle,\n elementColorScheme,\n elementIconOverrides,\n elementPaginationStyle,\n elementPinningStyle,\n elementRadioStyle,\n elementSkeletonStyle,\n elementTextFilterStyle,\n elementToggleStyle\n} from './parts';\n\n/**\n * Base theme combining all Element design system parts with AG Grid Alpine theme.\n * This theme includes custom styling for checkboxes, radios, toggles, pagination,\n * pinning, skeleton loaders, text filters, icons, and color scheme.\n * @internal\n */\nconst elementBaseTheme: Theme = themeAlpine\n .withPart(iconSetAlpine)\n .withPart(elementCheckboxStyle)\n .withPart(elementRadioStyle)\n .withPart(elementToggleStyle)\n .withPart(elementPaginationStyle)\n .withPart(elementPinningStyle)\n .withPart(elementSkeletonStyle)\n .withPart(elementTextFilterStyle)\n .withPart(elementIconOverrides)\n .withPart(elementColorScheme);\n\n/**\n * Standard density Element AG Grid theme.\n * Provides balanced spacing suitable for most use cases.\n * - Row height: 42px\n * - Header height: 48px\n * - Spacing: 8px\n */\nexport const elementTheme: Theme = elementBaseTheme.withParams({\n rowHeight: '42px',\n headerHeight: '48px',\n spacing: '8px'\n});\n\n/**\n * Compact density Element AG Grid theme.\n * Optimized for displaying more data in limited space.\n * - Row height: 28px\n * - Header height: 32px\n * - Spacing: 4px\n */\nexport const elementThemeCompact: Theme = elementBaseTheme.withParams({\n rowHeight: '28px',\n headerHeight: '32px',\n spacing: '4px'\n});\n\n/**\n * Comfort density Element AG Grid theme.\n * Provides generous spacing for enhanced readability and touch interactions.\n * - Row height: 84px\n * - Header height: 96px\n * - Spacing: 12px\n */\nexport const elementThemeComfort: Theme = elementBaseTheme.withParams({\n rowHeight: '84px',\n headerHeight: '96px',\n spacing: '12px'\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { GridOptions, provideGlobalGridOptions, Theme } from 'ag-grid-community';\n\nimport { AgDateInputComponent, AgNoRowsOverlayComponent } from './components';\nimport { elementTheme, elementThemeCompact, elementThemeComfort } from './themes';\n\n/**\n * Default AG Grid options for Element theme.\n * Includes custom components for date input and empty state overlay.\n * @internal\n */\nconst ELEMENT_AG_GRID_OPTIONS: GridOptions = {\n tooltipShowDelay: 200,\n components: {\n agDateInput: AgDateInputComponent,\n agNoRowsOverlay: AgNoRowsOverlayComponent\n }\n};\n\n/**\n * Theme mapping by density variant.\n * @internal\n */\nconst THEME_BY_DENSITY = new Map<string, Theme>([\n ['compact', elementThemeCompact],\n ['comfort', elementThemeComfort],\n ['standard', elementTheme]\n]);\n\n/**\n * Provides AG Grid global configuration with Element design system theme.\n *\n * This provider configures AG Grid with the Element theme, custom components,\n * and density-specific styling. Use it in your application providers.\n *\n * @param density - The density variant to use. Options:\n * - 'compact': Minimal spacing (28px row height, 32px header height, 4px spacing)\n * - 'standard': Default spacing (42px row height, 48px header height, 8px spacing)\n * - 'comfort': Generous spacing (84px row height, 96px header height, 12px spacing)\n * @param gridOptions - Optional AG Grid options to merge with Element defaults.\n * These options will override Element defaults if specified.\n * @returns Environment providers for dependency injection\n *\n * @example\n * ```typescript\n * // In app.config.ts\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideSiAgGridConfig()\n * ]\n * };\n *\n * // With custom options\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideSiAgGridConfig('compact', {\n * rowHeight: 30,\n * suppressMenuHide: true\n * })\n * ]\n * };\n * ```\n */\nexport const provideSiAgGridConfig = (\n density: 'compact' | 'comfort' | 'standard' = 'standard',\n gridOptions?: GridOptions\n): EnvironmentProviders => {\n return makeEnvironmentProviders([\n {\n provide: 'ag-grid-options',\n useValue: provideGlobalGridOptions({\n ...ELEMENT_AG_GRID_OPTIONS,\n ...gridOptions,\n theme: THEME_BY_DENSITY.get(density)\n })\n }\n ]);\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nexport * from './components';\nexport * from './provider';\nexport * from './themes';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -3,14 +3,16 @@ import { CdkTrapFocus, A11yModule } from '@angular/cdk/a11y';
|
|
|
3
3
|
import { BreakpointObserver } from '@angular/cdk/layout';
|
|
4
4
|
import { NgTemplateOutlet } from '@angular/common';
|
|
5
5
|
import * as i0 from '@angular/core';
|
|
6
|
-
import { input, signal, inject, Injector, viewChild, ChangeDetectionStrategy, Component, HostListener, Directive,
|
|
6
|
+
import { input, signal, inject, Injector, viewChild, effect, untracked, ChangeDetectionStrategy, Component, HostListener, Directive, ElementRef, computed, afterNextRender, booleanAttribute, model, output } from '@angular/core';
|
|
7
|
+
import { toSignal, toObservable } from '@angular/core/rxjs-interop';
|
|
7
8
|
import { elementMenu, elementThumbnails, elementDown2, elementOptionsVertical, elementFavoritesFilled, elementFavorites, elementExport, elementCancel } from '@siemens/element-icons';
|
|
8
9
|
import { SI_HEADER_WITH_DROPDOWNS, SiHeaderDropdownTriggerDirective, SI_HEADER_DROPDOWN_OPTIONS } from '@siemens/element-ng/header-dropdown';
|
|
9
10
|
import { addIcons, SiIconComponent } from '@siemens/element-ng/icon';
|
|
10
11
|
import { BOOTSTRAP_BREAKPOINTS } from '@siemens/element-ng/resize-observer';
|
|
11
12
|
import { t, SiTranslatePipe } from '@siemens/element-translate-ng/translate';
|
|
12
|
-
import { Subject,
|
|
13
|
-
import {
|
|
13
|
+
import { Subject, of } from 'rxjs';
|
|
14
|
+
import { switchMap, map } from 'rxjs/operators';
|
|
15
|
+
import { SiTooltipService, SiTooltipDirective } from '@siemens/element-ng/tooltip';
|
|
14
16
|
import { SiAvatarComponent } from '@siemens/element-ng/avatar';
|
|
15
17
|
import { ActivatedRoute, RouterLinkActive, RouterLink } from '@angular/router';
|
|
16
18
|
import { SiLinkModule } from '@siemens/element-ng/link';
|
|
@@ -57,16 +59,20 @@ class SiApplicationHeaderComponent {
|
|
|
57
59
|
this.closeLaunchpad();
|
|
58
60
|
});
|
|
59
61
|
/** @internal */
|
|
60
|
-
|
|
61
|
-
inlineDropdown = defer(() => {
|
|
62
|
-
const expandBreakpoint = this.expandBreakpoint();
|
|
62
|
+
inlineDropdown = toSignal(toObservable(this.expandBreakpoint).pipe(switchMap(expandBreakpoint => {
|
|
63
63
|
if (expandBreakpoint === 'never') {
|
|
64
64
|
return of(true);
|
|
65
65
|
}
|
|
66
66
|
return this.breakpointObserver
|
|
67
67
|
.observe(`(min-width: ${BOOTSTRAP_BREAKPOINTS[(expandBreakpoint + 'Minimum')]}px)`)
|
|
68
68
|
.pipe(map(({ matches }) => !matches));
|
|
69
|
-
});
|
|
69
|
+
})), { initialValue: false });
|
|
70
|
+
constructor() {
|
|
71
|
+
effect(() => {
|
|
72
|
+
this.inlineDropdown();
|
|
73
|
+
untracked(() => this.closeMobileMenus.next());
|
|
74
|
+
});
|
|
75
|
+
}
|
|
70
76
|
ngOnDestroy() {
|
|
71
77
|
this.closeMobileSub.unsubscribe();
|
|
72
78
|
this.closeMobileMenus.next();
|
|
@@ -137,9 +143,6 @@ class SiApplicationHeaderComponent {
|
|
|
137
143
|
this.closeMobileMenus.next();
|
|
138
144
|
this.mobileNavigationExpanded.set(true);
|
|
139
145
|
this.dropdownOpened();
|
|
140
|
-
this.inlineDropdown
|
|
141
|
-
.pipe(skip(1), takeUntil(this.closeMobileMenus))
|
|
142
|
-
.subscribe(() => this.closeMobileMenus.next());
|
|
143
146
|
this.focusTrap().focusTrap.focusFirstTabbableElementWhenReady();
|
|
144
147
|
}
|
|
145
148
|
}
|
|
@@ -156,7 +159,7 @@ class SiApplicationHeaderComponent {
|
|
|
156
159
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiApplicationHeaderComponent, decorators: [{
|
|
157
160
|
type: Component,
|
|
158
161
|
args: [{ selector: 'si-application-header', imports: [SiTranslatePipe, A11yModule, NgTemplateOutlet, SiIconComponent], providers: [{ provide: SI_HEADER_WITH_DROPDOWNS, useExisting: SiApplicationHeaderComponent }], changeDetection: ChangeDetectionStrategy.OnPush, template: "<header\n [class]=\"`application-header expand-${expandBreakpoint()}`\"\n [class.show-navigation]=\"mobileNavigationExpanded()\"\n>\n @if (launchpad()) {\n <button\n type=\"button\"\n aria-haspopup=\"dialog\"\n [class]=\"`header-toggle focus-inside d-${expandBreakpoint()}-block`\"\n [class.show]=\"launchpadOpen()\"\n [class.d-none]=\"hasNavigation()\"\n [attr.aria-expanded]=\"launchpadOpen()\"\n [attr.aria-label]=\"launchpadLabel() | translate\"\n [attr.aria-controls]=\"id + '-launchpad'\"\n (click)=\"toggleLaunchpad()\"\n >\n <si-icon class=\"icon-lg\" [icon]=\"icons.elementThumbnails\" />\n </button>\n }\n @if (hasNavigation()) {\n <button\n #navigationToggle\n type=\"button\"\n class=\"header-toggle focus-inside\"\n [class.show]=\"mobileNavigationExpanded()\"\n [attr.aria-expanded]=\"mobileNavigationExpanded()\"\n [attr.aria-label]=\"toggleNavigation | translate\"\n [attr.aria-controls]=\"id + '-navigation-wrapper'\"\n (click)=\"toggleMobileNavigationExpanded()\"\n >\n <si-icon class=\"icon-lg\" [icon]=\"icons.elementMenu\" />\n </button>\n }\n <ng-content select=\"si-header-brand, element-header-brand\">\n <div class=\"header-brand\"></div>\n </ng-content>\n\n <div\n class=\"d-contents\"\n [id]=\"id + '-navigation-wrapper'\"\n [cdkTrapFocus]=\"mobileNavigationExpanded()\"\n (keydown.escape)=\"navigationEscapePressed()\"\n >\n <ng-content select=\"si-header-navigation, element-header-navigation\">\n <div class=\"header-navigation\"></div>\n </ng-content>\n </div>\n\n <ng-content select=\"si-header-actions, element-header-actions\">\n <div class=\"header-actions\"></div>\n </ng-content>\n</header>\n\n@if (launchpadOpen() && launchpad()) {\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n [id]=\"id + '-launchpad'\"\n [attr.aria-label]=\"launchpadLabel() | translate\"\n >\n <ng-template [ngTemplateOutlet]=\"launchpad()!\" [ngTemplateOutletInjector]=\"injector\" />\n </div>\n}\n\n@if (openDropdownCount() || launchpadOpen()) {\n <div\n [class]=\"`modal-backdrop ${launchpadOpen() ? 'd-block' : `d-${expandBreakpoint()}-none`}`\"\n (click)=\"backdropClicked()\"\n ></div>\n}\n", styles: [".modal-backdrop{z-index:1032}\n"] }]
|
|
159
|
-
}], propDecorators: { expandBreakpoint: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandBreakpoint", required: false }] }], launchpad: [{ type: i0.Input, args: [{ isSignal: true, alias: "launchpad", required: false }] }], launchpadLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "launchpadLabel", required: false }] }], navigationToggle: [{ type: i0.ViewChild, args: ['navigationToggle', { isSignal: true }] }], focusTrap: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkTrapFocus), { isSignal: true }] }] } });
|
|
162
|
+
}], ctorParameters: () => [], propDecorators: { expandBreakpoint: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandBreakpoint", required: false }] }], launchpad: [{ type: i0.Input, args: [{ isSignal: true, alias: "launchpad", required: false }] }], launchpadLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "launchpadLabel", required: false }] }], navigationToggle: [{ type: i0.ViewChild, args: ['navigationToggle', { isSignal: true }] }], focusTrap: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkTrapFocus), { isSignal: true }] }] } });
|
|
160
163
|
|
|
161
164
|
/**
|
|
162
165
|
* Copyright (c) Siemens 2016 - 2026
|
|
@@ -293,10 +296,8 @@ class SiHeaderCollapsibleActionsComponent {
|
|
|
293
296
|
focusTrap = viewChild.required(CdkTrapFocus);
|
|
294
297
|
header = inject(SiApplicationHeaderComponent);
|
|
295
298
|
closeMobileSub = this.header.closeMobileMenus.subscribe(() => this.closeMobile());
|
|
296
|
-
inlineChangeSubscription;
|
|
297
299
|
ngOnDestroy() {
|
|
298
300
|
this.closeMobileSub.unsubscribe();
|
|
299
|
-
this.inlineChangeSubscription?.unsubscribe();
|
|
300
301
|
}
|
|
301
302
|
toggleMobileExpanded() {
|
|
302
303
|
if (this.mobileExpanded()) {
|
|
@@ -315,9 +316,6 @@ class SiHeaderCollapsibleActionsComponent {
|
|
|
315
316
|
this.header.closeMobileMenus.next();
|
|
316
317
|
this.header.dropdownOpened();
|
|
317
318
|
this.mobileExpanded.set(true);
|
|
318
|
-
this.inlineChangeSubscription = this.header.inlineDropdown
|
|
319
|
-
.pipe(skip(1), takeUntil(this.header.closeMobileMenus))
|
|
320
|
-
.subscribe(() => this.header.closeMobileMenus.next());
|
|
321
319
|
this.focusTrap().focusTrap.focusFirstTabbableElementWhenReady();
|
|
322
320
|
}
|
|
323
321
|
}
|
|
@@ -395,6 +393,9 @@ class SiHeaderActionIconItemBase extends SiHeaderActionItemBase {
|
|
|
395
393
|
* - =true, an empty red dot will be shown
|
|
396
394
|
*/
|
|
397
395
|
badge = input(...(ngDevMode ? [undefined, { debugName: "badge" }] : []));
|
|
396
|
+
tooltipService = inject(SiTooltipService);
|
|
397
|
+
elementRef = inject(ElementRef);
|
|
398
|
+
existingTooltip = inject(SiTooltipDirective, { optional: true, host: true });
|
|
398
399
|
badgeDot = computed(() => typeof this.badge() === 'boolean' ? this.badge() : false, ...(ngDevMode ? [{ debugName: "badgeDot" }] : []));
|
|
399
400
|
badgeValue = computed(() => {
|
|
400
401
|
const badge = this.badge();
|
|
@@ -402,6 +403,24 @@ class SiHeaderActionIconItemBase extends SiHeaderActionItemBase {
|
|
|
402
403
|
? `${badge > 99 ? '+' : ''}${Math.min(99, Math.round(badge))}`
|
|
403
404
|
: undefined;
|
|
404
405
|
}, ...(ngDevMode ? [{ debugName: "badgeValue" }] : []));
|
|
406
|
+
constructor() {
|
|
407
|
+
super();
|
|
408
|
+
effect(onCleanup => this.setupTooltip(onCleanup));
|
|
409
|
+
}
|
|
410
|
+
setupTooltip(onCleanup) {
|
|
411
|
+
const hasActiveTooltip = !!this.existingTooltip &&
|
|
412
|
+
!this.existingTooltip.isDisabled() &&
|
|
413
|
+
!!this.existingTooltip.siTooltip();
|
|
414
|
+
if (this.visuallyHideTitle() && !hasActiveTooltip) {
|
|
415
|
+
const tooltipRef = this.tooltipService.createTooltip({
|
|
416
|
+
element: this.elementRef,
|
|
417
|
+
placement: 'auto',
|
|
418
|
+
tooltip: this.itemTitle,
|
|
419
|
+
tooltipContext: () => undefined
|
|
420
|
+
});
|
|
421
|
+
onCleanup(() => tooltipRef.destroy());
|
|
422
|
+
}
|
|
423
|
+
}
|
|
405
424
|
ngOnChanges(changes) {
|
|
406
425
|
if (changes.badge) {
|
|
407
426
|
if (changes.badge.currentValue && !changes.badge.previousValue) {
|
|
@@ -412,16 +431,14 @@ class SiHeaderActionIconItemBase extends SiHeaderActionItemBase {
|
|
|
412
431
|
}
|
|
413
432
|
}
|
|
414
433
|
}
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
}
|
|
418
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderActionIconItemBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
434
|
+
visuallyHideTitle = computed(() => !this.collapsibleActions?.mobileExpanded(), ...(ngDevMode ? [{ debugName: "visuallyHideTitle" }] : []));
|
|
435
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderActionIconItemBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
419
436
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.8", type: SiHeaderActionIconItemBase, isStandalone: true, inputs: { badge: { classPropertyName: "badge", publicName: "badge", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
|
|
420
437
|
}
|
|
421
438
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderActionIconItemBase, decorators: [{
|
|
422
439
|
type: Directive,
|
|
423
440
|
args: [{}]
|
|
424
|
-
}], propDecorators: { badge: [{ type: i0.Input, args: [{ isSignal: true, alias: "badge", required: false }] }] } });
|
|
441
|
+
}], ctorParameters: () => [], propDecorators: { badge: [{ type: i0.Input, args: [{ isSignal: true, alias: "badge", required: false }] }] } });
|
|
425
442
|
|
|
426
443
|
/**
|
|
427
444
|
* Copyright (c) Siemens 2016 - 2026
|
|
@@ -431,16 +448,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
431
448
|
class SiHeaderActionItemComponent extends SiHeaderActionIconItemBase {
|
|
432
449
|
/** The icon to be shown. */
|
|
433
450
|
icon = input.required(...(ngDevMode ? [{ debugName: "icon" }] : []));
|
|
451
|
+
itemTitle = viewChild.required('itemTitle');
|
|
434
452
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderActionItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
435
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiHeaderActionItemComponent, isStandalone: true, selector: "button[si-header-action-item], a[si-header-action-item]", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.dropdown-toggle": "!!dropdownTrigger" }, classAttribute: "header-item focus-inside" }, usesInheritance: true, ngImport: i0, template: "<si-icon class=\"icon-lg\" [class.badge-dot]=\"badgeDot()\" [icon]=\"icon()\" />\n@if (badgeValue()) {\n <span class=\"badge-text\">{{ badgeValue() }}</span>\n}\n<ng-content select=\"si-avatar\" />\n<div class=\"item-title\" [class.visually-hidden]=\"visuallyHideTitle\">\n <ng-content />\n</div>\n@if (dropdownTrigger) {\n <si-icon class=\"dropdown-caret\" [icon]=\"icons.elementDown2\" />\n}\n", dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
453
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiHeaderActionItemComponent, isStandalone: true, selector: "button[si-header-action-item], a[si-header-action-item]", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.dropdown-toggle": "!!dropdownTrigger" }, classAttribute: "header-item focus-inside" }, providers: [SiTooltipService], viewQueries: [{ propertyName: "itemTitle", first: true, predicate: ["itemTitle"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<si-icon class=\"icon-lg\" [class.badge-dot]=\"badgeDot()\" [icon]=\"icon()\" />\n@if (badgeValue()) {\n <span class=\"badge-text\">{{ badgeValue() }}</span>\n}\n<ng-content select=\"si-avatar\" />\n<div #itemTitle class=\"item-title\" [class.visually-hidden]=\"visuallyHideTitle()\">\n <ng-content />\n</div>\n@if (dropdownTrigger) {\n <si-icon class=\"dropdown-caret\" [icon]=\"icons.elementDown2\" />\n}\n", dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
436
454
|
}
|
|
437
455
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderActionItemComponent, decorators: [{
|
|
438
456
|
type: Component,
|
|
439
|
-
args: [{ selector: 'button[si-header-action-item], a[si-header-action-item]', imports: [SiIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
457
|
+
args: [{ selector: 'button[si-header-action-item], a[si-header-action-item]', imports: [SiIconComponent], providers: [SiTooltipService], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
440
458
|
class: 'header-item focus-inside',
|
|
441
459
|
'[class.dropdown-toggle]': '!!dropdownTrigger'
|
|
442
|
-
}, template: "<si-icon class=\"icon-lg\" [class.badge-dot]=\"badgeDot()\" [icon]=\"icon()\" />\n@if (badgeValue()) {\n <span class=\"badge-text\">{{ badgeValue() }}</span>\n}\n<ng-content select=\"si-avatar\" />\n<div class=\"item-title\" [class.visually-hidden]=\"visuallyHideTitle\">\n <ng-content />\n</div>\n@if (dropdownTrigger) {\n <si-icon class=\"dropdown-caret\" [icon]=\"icons.elementDown2\" />\n}\n" }]
|
|
443
|
-
}], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: true }] }] } });
|
|
460
|
+
}, template: "<si-icon class=\"icon-lg\" [class.badge-dot]=\"badgeDot()\" [icon]=\"icon()\" />\n@if (badgeValue()) {\n <span class=\"badge-text\">{{ badgeValue() }}</span>\n}\n<ng-content select=\"si-avatar\" />\n<div #itemTitle class=\"item-title\" [class.visually-hidden]=\"visuallyHideTitle()\">\n <ng-content />\n</div>\n@if (dropdownTrigger) {\n <si-icon class=\"dropdown-caret\" [icon]=\"icons.elementDown2\" />\n}\n" }]
|
|
461
|
+
}], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: true }] }], itemTitle: [{ type: i0.ViewChild, args: ['itemTitle', { isSignal: true }] }] } });
|
|
444
462
|
|
|
445
463
|
/**
|
|
446
464
|
* Copyright (c) Siemens 2016 - 2026
|
|
@@ -454,15 +472,16 @@ class SiHeaderAccountItemComponent extends SiHeaderActionIconItemBase {
|
|
|
454
472
|
initials = input(...(ngDevMode ? [undefined, { debugName: "initials" }] : []));
|
|
455
473
|
/** URL to an image which should be shown instead of the initials. */
|
|
456
474
|
imageUrl = input(...(ngDevMode ? [undefined, { debugName: "imageUrl" }] : []));
|
|
475
|
+
itemTitle = this.name;
|
|
457
476
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderAccountItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
458
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiHeaderAccountItemComponent, isStandalone: true, selector: "button[si-header-account-item]", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, initials: { classPropertyName: "initials", publicName: "initials", isSignal: true, isRequired: false, transformFunction: null }, imageUrl: { classPropertyName: "imageUrl", publicName: "imageUrl", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.dropdown-toggle": "!!dropdownTrigger" }, classAttribute: "header-item focus-inside px-4 py-0" }, usesInheritance: true, ngImport: i0, template: "<si-avatar\n size=\"small\"\n color=\"0\"\n [altText]=\"name()\"\n [initials]=\"initials()\"\n [imageUrl]=\"imageUrl()\"\n/>\n<div class=\"item-title\" aria-hidden=\"true\" [class.d-none]=\"visuallyHideTitle\">\n {{ name() }}\n</div>\n@if (badgeValue()) {\n <div class=\"badge-text\">{{ badgeValue() }}</div>\n}\n@if (dropdownTrigger) {\n <si-icon class=\"dropdown-caret\" [icon]=\"icons.elementDown2\" />\n}\n", styles: ["si-avatar.small{--avatar-size: calc(1.5rem + 8px) }\n"], dependencies: [{ kind: "component", type: SiAvatarComponent, selector: "si-avatar", inputs: ["size", "imageUrl", "icon", "initials", "color", "altText", "status", "statusAriaLabel"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
477
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiHeaderAccountItemComponent, isStandalone: true, selector: "button[si-header-account-item]", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, initials: { classPropertyName: "initials", publicName: "initials", isSignal: true, isRequired: false, transformFunction: null }, imageUrl: { classPropertyName: "imageUrl", publicName: "imageUrl", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.dropdown-toggle": "!!dropdownTrigger" }, classAttribute: "header-item focus-inside px-4 py-0" }, providers: [SiTooltipService], usesInheritance: true, ngImport: i0, template: "<si-avatar\n size=\"small\"\n color=\"0\"\n [altText]=\"name()\"\n [initials]=\"initials()\"\n [imageUrl]=\"imageUrl()\"\n/>\n<div class=\"item-title\" aria-hidden=\"true\" [class.d-none]=\"visuallyHideTitle()\">\n {{ name() }}\n</div>\n@if (badgeValue()) {\n <div class=\"badge-text\">{{ badgeValue() }}</div>\n}\n@if (dropdownTrigger) {\n <si-icon class=\"dropdown-caret\" [icon]=\"icons.elementDown2\" />\n}\n", styles: ["si-avatar.small{--avatar-size: calc(1.5rem + 8px) }\n"], dependencies: [{ kind: "component", type: SiAvatarComponent, selector: "si-avatar", inputs: ["size", "imageUrl", "icon", "initials", "color", "altText", "status", "statusAriaLabel"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
459
478
|
}
|
|
460
479
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderAccountItemComponent, decorators: [{
|
|
461
480
|
type: Component,
|
|
462
|
-
args: [{ selector: 'button[si-header-account-item]', imports: [SiAvatarComponent, SiIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
481
|
+
args: [{ selector: 'button[si-header-account-item]', imports: [SiAvatarComponent, SiIconComponent], providers: [SiTooltipService], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
463
482
|
class: 'header-item focus-inside px-4 py-0',
|
|
464
483
|
'[class.dropdown-toggle]': '!!dropdownTrigger'
|
|
465
|
-
}, template: "<si-avatar\n size=\"small\"\n color=\"0\"\n [altText]=\"name()\"\n [initials]=\"initials()\"\n [imageUrl]=\"imageUrl()\"\n/>\n<div class=\"item-title\" aria-hidden=\"true\" [class.d-none]=\"visuallyHideTitle\">\n {{ name() }}\n</div>\n@if (badgeValue()) {\n <div class=\"badge-text\">{{ badgeValue() }}</div>\n}\n@if (dropdownTrigger) {\n <si-icon class=\"dropdown-caret\" [icon]=\"icons.elementDown2\" />\n}\n", styles: ["si-avatar.small{--avatar-size: calc(1.5rem + 8px) }\n"] }]
|
|
484
|
+
}, template: "<si-avatar\n size=\"small\"\n color=\"0\"\n [altText]=\"name()\"\n [initials]=\"initials()\"\n [imageUrl]=\"imageUrl()\"\n/>\n<div class=\"item-title\" aria-hidden=\"true\" [class.d-none]=\"visuallyHideTitle()\">\n {{ name() }}\n</div>\n@if (badgeValue()) {\n <div class=\"badge-text\">{{ badgeValue() }}</div>\n}\n@if (dropdownTrigger) {\n <si-icon class=\"dropdown-caret\" [icon]=\"icons.elementDown2\" />\n}\n", styles: ["si-avatar.small{--avatar-size: calc(1.5rem + 8px) }\n"] }]
|
|
466
485
|
}], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: true }] }], initials: [{ type: i0.Input, args: [{ isSignal: true, alias: "initials", required: false }] }], imageUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "imageUrl", required: false }] }] } });
|
|
467
486
|
|
|
468
487
|
/**
|
|
@@ -477,11 +496,11 @@ class SiHeaderSelectionItemComponent extends SiHeaderActionItemBase {
|
|
|
477
496
|
*/
|
|
478
497
|
open = input(false, ...(ngDevMode ? [{ debugName: "open" }] : []));
|
|
479
498
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderSelectionItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
480
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.8", type: SiHeaderSelectionItemComponent, isStandalone: true, selector: "button[si-header-selection-item]", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.show": "open()" }, classAttribute: "header-item header-selection-item focus-inside dropdown-toggle" }, usesInheritance: true, ngImport: i0, template: "<div class=\"item-title\">\n <ng-content />\n</div>\n<si-icon class=\"d-block dropdown-caret\" [icon]=\"icons.elementDown2\" />\n", dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }] });
|
|
499
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.8", type: SiHeaderSelectionItemComponent, isStandalone: true, selector: "button[si-header-selection-item]", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.show": "open()" }, classAttribute: "header-item header-selection-item focus-inside dropdown-toggle" }, usesInheritance: true, ngImport: i0, template: "<div class=\"item-title\">\n <ng-content />\n</div>\n<si-icon class=\"d-block dropdown-caret\" [icon]=\"icons.elementDown2\" />\n", dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
481
500
|
}
|
|
482
501
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderSelectionItemComponent, decorators: [{
|
|
483
502
|
type: Component,
|
|
484
|
-
args: [{ selector: 'button[si-header-selection-item]', imports: [SiIconComponent], host: {
|
|
503
|
+
args: [{ selector: 'button[si-header-selection-item]', imports: [SiIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
485
504
|
class: 'header-item header-selection-item focus-inside dropdown-toggle',
|
|
486
505
|
'[class.show]': 'open()'
|
|
487
506
|
}, template: "<div class=\"item-title\">\n <ng-content />\n</div>\n<si-icon class=\"d-block dropdown-caret\" [icon]=\"icons.elementDown2\" />\n" }]
|
|
@@ -604,11 +623,11 @@ class SiHeaderNavigationComponent {
|
|
|
604
623
|
this.header.hasNavigation.set(false);
|
|
605
624
|
}
|
|
606
625
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderNavigationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
607
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiHeaderNavigationComponent, isStandalone: true, selector: "si-header-navigation", host: { attributes: { "role": "navigation" }, classAttribute: "header-navigation" }, ngImport: i0, template: "@if (header.launchpad()) {\n <button\n type=\"button\"\n [class]=\"`header-item focus-inside d-${header.expandBreakpoint()}-none`\"\n (click)=\"header.openLaunchpad()\"\n >\n <si-icon class=\"icon-lg pe-5\" [icon]=\"icons.elementThumbnails\" />\n {{ header.launchpadLabel() | translate }}\n </button>\n}\n<ng-content />\n", dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }] });
|
|
626
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiHeaderNavigationComponent, isStandalone: true, selector: "si-header-navigation", host: { attributes: { "role": "navigation" }, classAttribute: "header-navigation" }, ngImport: i0, template: "@if (header.launchpad()) {\n <button\n type=\"button\"\n [class]=\"`header-item focus-inside d-${header.expandBreakpoint()}-none`\"\n (click)=\"header.openLaunchpad()\"\n >\n <si-icon class=\"icon-lg pe-5\" [icon]=\"icons.elementThumbnails\" />\n {{ header.launchpadLabel() | translate }}\n </button>\n}\n<ng-content />\n", dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
608
627
|
}
|
|
609
628
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderNavigationComponent, decorators: [{
|
|
610
629
|
type: Component,
|
|
611
|
-
args: [{ selector: 'si-header-navigation', imports: [SiTranslatePipe, SiIconComponent], host: { class: 'header-navigation', role: 'navigation' }, template: "@if (header.launchpad()) {\n <button\n type=\"button\"\n [class]=\"`header-item focus-inside d-${header.expandBreakpoint()}-none`\"\n (click)=\"header.openLaunchpad()\"\n >\n <si-icon class=\"icon-lg pe-5\" [icon]=\"icons.elementThumbnails\" />\n {{ header.launchpadLabel() | translate }}\n </button>\n}\n<ng-content />\n" }]
|
|
630
|
+
args: [{ selector: 'si-header-navigation', imports: [SiTranslatePipe, SiIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'header-navigation', role: 'navigation' }, template: "@if (header.launchpad()) {\n <button\n type=\"button\"\n [class]=\"`header-item focus-inside d-${header.expandBreakpoint()}-none`\"\n (click)=\"header.openLaunchpad()\"\n >\n <si-icon class=\"icon-lg pe-5\" [icon]=\"icons.elementThumbnails\" />\n {{ header.launchpadLabel() | translate }}\n </button>\n}\n<ng-content />\n" }]
|
|
612
631
|
}], ctorParameters: () => [] });
|
|
613
632
|
|
|
614
633
|
/**
|