@siemens/element-ng 48.0.0-next.3 → 48.0.0-next.4
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/card/index.d.ts +1 -1
- package/content-action-bar/index.d.ts +1 -1
- package/dashboard/index.d.ts +3 -3
- package/datatable/index.d.ts +1 -2
- package/datepicker/index.d.ts +1 -1
- package/fesm2022/siemens-element-ng-circle-status.mjs +2 -2
- package/fesm2022/siemens-element-ng-circle-status.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-datatable.mjs +2 -2
- package/fesm2022/siemens-element-ng-datatable.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-filtered-search.mjs +2 -2
- package/fesm2022/siemens-element-ng-header-dropdown.mjs +4 -3
- package/fesm2022/siemens-element-ng-header-dropdown.mjs.map +1 -1
- package/fesm2022/siemens-element-ng-tree-view.mjs +5 -22
- package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
- package/header-dropdown/index.d.ts +1 -1
- package/icon/index.d.ts +1 -1
- package/list-details/index.d.ts +2 -2
- package/menu/index.d.ts +1 -1
- package/navbar-vertical/index.d.ts +1 -1
- package/package.json +7 -7
- package/popover/index.d.ts +2 -2
- package/popover-next/index.d.ts +2 -2
- package/tooltip/index.d.ts +2 -2
- package/tree-view/index.d.ts +1 -12
package/card/index.d.ts
CHANGED
|
@@ -61,7 +61,7 @@ declare class SiCardComponent {
|
|
|
61
61
|
*
|
|
62
62
|
* @defaultValue 'scale-down'
|
|
63
63
|
*/
|
|
64
|
-
readonly imgObjectFit: _angular_core.InputSignal<"
|
|
64
|
+
readonly imgObjectFit: _angular_core.InputSignal<"fill" | "contain" | "cover" | "none" | "scale-down" | undefined>;
|
|
65
65
|
/**
|
|
66
66
|
* Sets the image [object-position](https://developer.mozilla.org/en-US/docs/Web/CSS/object-position) CSS property.
|
|
67
67
|
*/
|
|
@@ -18,7 +18,7 @@ declare class SiContentActionBarComponent implements AfterViewInit {
|
|
|
18
18
|
/**
|
|
19
19
|
* List of primary actions. Supports up to **4** actions and omits additional ones.
|
|
20
20
|
*/
|
|
21
|
-
readonly primaryActions: _angular_core.InputSignal<readonly (
|
|
21
|
+
readonly primaryActions: _angular_core.InputSignal<readonly (MenuItem | ContentActionBarMainItem)[] | undefined>;
|
|
22
22
|
/**
|
|
23
23
|
* List of secondary actions.
|
|
24
24
|
*/
|
package/dashboard/index.d.ts
CHANGED
|
@@ -64,7 +64,7 @@ declare class SiDashboardCardComponent extends SiCardComponent implements OnDest
|
|
|
64
64
|
readonly displayContentActionBar: _angular_core.Signal<boolean>;
|
|
65
65
|
protected readonly actionBarViewTypeComputed: _angular_core.Signal<_siemens_element_ng_content_action_bar.ViewType>;
|
|
66
66
|
protected readonly actionBarTitleComputed: _angular_core.Signal<_siemens_element_translate_ng_translate_types.TranslatableString>;
|
|
67
|
-
protected readonly primaryActionsComputed: _angular_core.Signal<(
|
|
67
|
+
protected readonly primaryActionsComputed: _angular_core.Signal<(MenuItem | ContentActionBarMainItem)[]>;
|
|
68
68
|
private readonly expandRestoreIconTooltip;
|
|
69
69
|
private readonly expandActionItem;
|
|
70
70
|
private readonly restoreActionItem;
|
|
@@ -591,7 +591,7 @@ declare class SiTimelineWidgetComponent extends SiWidgetBaseComponent<SiTimeline
|
|
|
591
591
|
*
|
|
592
592
|
* @defaultValue []
|
|
593
593
|
*/
|
|
594
|
-
readonly primaryActions: _angular_core.InputSignal<(
|
|
594
|
+
readonly primaryActions: _angular_core.InputSignal<(MenuItem | ContentActionBarMainItem)[]>;
|
|
595
595
|
/**
|
|
596
596
|
* Input list of secondary action items.
|
|
597
597
|
*
|
|
@@ -691,7 +691,7 @@ declare class SiValueWidgetComponent {
|
|
|
691
691
|
*
|
|
692
692
|
* @defaultValue []
|
|
693
693
|
*/
|
|
694
|
-
readonly primaryActions: _angular_core.InputSignal<(
|
|
694
|
+
readonly primaryActions: _angular_core.InputSignal<(MenuItem | ContentActionBarMainItem)[]>;
|
|
695
695
|
/**
|
|
696
696
|
* Input list of secondary action items.
|
|
697
697
|
*
|
package/datatable/index.d.ts
CHANGED
|
@@ -5,9 +5,8 @@ declare class SiDatatableInteractionDirective implements OnDestroy, OnInit {
|
|
|
5
5
|
/**
|
|
6
6
|
* The selection type of the datatable, will automatically be set if set for datatable.
|
|
7
7
|
*
|
|
8
|
-
* @defaultValue ''
|
|
9
8
|
*/
|
|
10
|
-
readonly selectionType: i0.InputSignal<
|
|
9
|
+
readonly selectionType: i0.InputSignal<"multi" | "single" | "multiClick" | "cell" | "checkbox" | undefined>;
|
|
11
10
|
/**
|
|
12
11
|
* Automatically select every row or cell that is navigated trough.
|
|
13
12
|
* Is ignored unless `selectionType` is `single` or `cell`.
|
package/datepicker/index.d.ts
CHANGED
|
@@ -601,7 +601,7 @@ declare class SiDatepickerOverlayDirective implements OnDestroy {
|
|
|
601
601
|
* component are different.
|
|
602
602
|
* @internal
|
|
603
603
|
*/
|
|
604
|
-
readonly placement: _angular_core.WritableSignal<"
|
|
604
|
+
readonly placement: _angular_core.WritableSignal<"auto" | "top" | "start" | "end" | "bottom" | ConnectionPositionPair[]>;
|
|
605
605
|
/**
|
|
606
606
|
* Output event on closing datepicker e.g. by clicking backdrop or escape key.
|
|
607
607
|
*/
|
|
@@ -65,8 +65,8 @@ class SiCircleStatusComponent {
|
|
|
65
65
|
const status = this.status();
|
|
66
66
|
const statusName = status && this.statusIcons[status] ? status : 'none';
|
|
67
67
|
const direction = this.eventOut() ? ' out' : '';
|
|
68
|
-
const iconName = this.icon()?.replace(/^element-{0,1}/, '') ?? '';
|
|
69
|
-
return `${iconName.toLocaleLowerCase()}${this.status() && this.icon() ? '
|
|
68
|
+
const iconName = this.icon()?.replace(/^element-{0,1}(.+)/, '$1 ') ?? '';
|
|
69
|
+
return `${iconName.toLocaleLowerCase()}${this.status() && this.icon() ? 'in ' : ''}status ${statusName}${direction}`;
|
|
70
70
|
});
|
|
71
71
|
statusIcon = computed(() => {
|
|
72
72
|
const status = this.status();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-circle-status.mjs","sources":["../../../../projects/element-ng/circle-status/si-circle-status.component.ts","../../../../projects/element-ng/circle-status/si-circle-status.component.html","../../../../projects/element-ng/circle-status/si-circle-status.module.ts","../../../../projects/element-ng/circle-status/index.ts","../../../../projects/element-ng/circle-status/siemens-element-ng-circle-status.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgClass } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n OnChanges,\n OnDestroy,\n signal,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { BlinkService, EntityStatusType, StatusIcon } from '@siemens/element-ng/common';\nimport {\n addIcons,\n elementRight4,\n SiIconComponent,\n STATUS_ICON_CONFIG\n} from '@siemens/element-ng/icon';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\nimport { Observable, Subscription } from 'rxjs';\n\n@Component({\n selector: 'si-circle-status',\n imports: [NgClass, SiIconComponent, SiTranslatePipe],\n templateUrl: './si-circle-status.component.html',\n styleUrl: './si-circle-status.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiCircleStatusComponent implements OnChanges, OnDestroy {\n private readonly statusIcons = inject(STATUS_ICON_CONFIG);\n /**\n * The status (success, info, warning, danger) to be visualized.\n */\n readonly status = input<EntityStatusType>();\n\n /* DO NOT REMOVE: Even though the input is marked as deprecated, the core-team decided not to remove the\n input. The possibility to have custom color is often requested by projects, so we keep it.\n however in order to discourage it's use, we keep it marked deprecated.\n */\n /**\n * A custom color (e.g. `#fefefe`) for exceptional cases.\n * @deprecated use the semantic `status` input instead.\n */\n readonly color = input<string>();\n\n /**\n * Set a domain type icon (e.g. `element-door`) for which the status shall be shown.\n * Leave undefined for visualizing the status without an icon.\n */\n readonly icon = input<string>();\n\n /**\n * Set the size using either regular or small only works when used together with `icon`\n *\n * @defaultValue 'regular'\n */\n readonly size = input<'regular' | 'small'>('regular');\n\n /**\n * event direction is out\n *\n * @defaultValue false\n */\n readonly eventOut = input(false, { transform: booleanAttribute });\n\n /**\n * Custom icon class for event out\n */\n readonly eventIcon = input<string>();\n\n /**\n * Whether the status should appear with a pulsing circle around the badge.\n *\n * @defaultValue false\n */\n readonly blink = input(false, { transform: booleanAttribute });\n\n /**\n * Blink pulse generator for synchronized blinking with other components\n */\n readonly blinkPulse = input<Observable<boolean>>();\n\n /**\n * Aria label for icon and status combo. Needed for a11y\n */\n readonly ariaLabel = input<string>();\n\n protected readonly backgroundClass = computed(() => this.statusIcon()?.background ?? '');\n protected readonly theAriaLabel = computed(() => this.ariaLabel() ?? this.autoLabel());\n protected readonly autoLabel = computed(() => {\n const status = this.status();\n const statusName = status && this.statusIcons[status] ? status : 'none';\n const direction = this.eventOut() ? ' out' : '';\n const iconName = this.icon()?.replace(/^element-{0,1}/, '') ?? '';\n return `${iconName.toLocaleLowerCase()}${\n this.status() && this.icon() ? ' in ' : ''\n }status ${statusName}${direction}`;\n });\n protected readonly statusIcon = computed<StatusIcon | undefined>(() => {\n const status = this.status();\n return status ? this.statusIcons[status] : undefined;\n });\n protected readonly blinkOn = signal(false);\n protected readonly contrastFix = signal(false);\n protected readonly icons = addIcons({ elementRight4 });\n private blinkSubs?: Subscription;\n\n private readonly bg = viewChild.required<ElementRef>('bg');\n\n private blinkService = inject(BlinkService);\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.blinkService && changes.blink) {\n this.blinkSubs?.unsubscribe();\n\n if (this.blink()) {\n const pulse = this.blinkPulse() ?? this.blinkService.pulse$;\n this.blinkSubs = pulse.subscribe(onOff => {\n this.blinkOn.set(onOff);\n });\n } else {\n this.blinkOn.set(false);\n }\n }\n if (changes.color || changes.blink) {\n queueMicrotask(() => {\n this.contrastFix.set(!!this.color() && this.blink() && this.calculateContrastFix());\n });\n }\n }\n\n ngOnDestroy(): void {\n this.blinkSubs?.unsubscribe();\n }\n\n private calculateContrastFix(): boolean {\n // see https://www.w3.org/TR/AERT/#color-contrast\n const rgb = getComputedStyle(this.bg().nativeElement)\n .backgroundColor?.match(/\\d+/g)\n ?.map(v => +v);\n return !!rgb && Math.round((rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000) <= 128;\n }\n}\n","<div\n class=\"status-indication d-flex align-items-center justify-content-center\"\n role=\"status\"\n [class.has-icon]=\"icon()\"\n [class.small]=\"size() === 'small'\"\n [attr.aria-label]=\"theAriaLabel() | translate\"\n>\n <div\n #bg\n class=\"bg\"\n [class.pulse]=\"blinkOn()\"\n [class.deprecated-color]=\"!status()\"\n [class.contrast-fix]=\"contrastFix()\"\n [ngClass]=\"backgroundClass()\"\n [style.background-color]=\"color()\"\n ></div>\n @if (!status()) {\n <div class=\"deprecated-dot\" [style.background-color]=\"color()\"></div>\n }\n @let iconConfig = statusIcon();\n @if (iconConfig) {\n <span class=\"status-icon icon-stack indicator\">\n <si-icon class=\"status-icon\" [ngClass]=\"iconConfig.color\" [icon]=\"iconConfig.icon\" />\n <si-icon\n class=\"status-icon\"\n [ngClass]=\"iconConfig.stackedColor\"\n [icon]=\"iconConfig.stacked\"\n />\n </span>\n }\n @let eventIconValue = eventIcon();\n @if (eventOut()) {\n <si-icon class=\"icon text-body event-out flip-rtl\" [icon]=\"icons.elementRight4\" />\n } @else if (eventIconValue) {\n <si-icon class=\"icon text-body event-out\" [icon]=\"eventIconValue\" />\n }\n @let iconValue = icon();\n @if (iconValue) {\n <si-icon class=\"icon position-relative text-body\" [icon]=\"iconValue\" />\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiCircleStatusComponent } from './si-circle-status.component';\n\n@NgModule({\n imports: [SiCircleStatusComponent],\n exports: [SiCircleStatusComponent]\n})\nexport class SiCircleStatusModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-circle-status.component';\nexport * from './si-circle-status.module';\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-circle-status.mjs","sources":["../../../../projects/element-ng/circle-status/si-circle-status.component.ts","../../../../projects/element-ng/circle-status/si-circle-status.component.html","../../../../projects/element-ng/circle-status/si-circle-status.module.ts","../../../../projects/element-ng/circle-status/index.ts","../../../../projects/element-ng/circle-status/siemens-element-ng-circle-status.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgClass } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n OnChanges,\n OnDestroy,\n signal,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { BlinkService, EntityStatusType, StatusIcon } from '@siemens/element-ng/common';\nimport {\n addIcons,\n elementRight4,\n SiIconComponent,\n STATUS_ICON_CONFIG\n} from '@siemens/element-ng/icon';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\nimport { Observable, Subscription } from 'rxjs';\n\n@Component({\n selector: 'si-circle-status',\n imports: [NgClass, SiIconComponent, SiTranslatePipe],\n templateUrl: './si-circle-status.component.html',\n styleUrl: './si-circle-status.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiCircleStatusComponent implements OnChanges, OnDestroy {\n private readonly statusIcons = inject(STATUS_ICON_CONFIG);\n /**\n * The status (success, info, warning, danger) to be visualized.\n */\n readonly status = input<EntityStatusType>();\n\n /* DO NOT REMOVE: Even though the input is marked as deprecated, the core-team decided not to remove the\n input. The possibility to have custom color is often requested by projects, so we keep it.\n however in order to discourage it's use, we keep it marked deprecated.\n */\n /**\n * A custom color (e.g. `#fefefe`) for exceptional cases.\n * @deprecated use the semantic `status` input instead.\n */\n readonly color = input<string>();\n\n /**\n * Set a domain type icon (e.g. `element-door`) for which the status shall be shown.\n * Leave undefined for visualizing the status without an icon.\n */\n readonly icon = input<string>();\n\n /**\n * Set the size using either regular or small only works when used together with `icon`\n *\n * @defaultValue 'regular'\n */\n readonly size = input<'regular' | 'small'>('regular');\n\n /**\n * event direction is out\n *\n * @defaultValue false\n */\n readonly eventOut = input(false, { transform: booleanAttribute });\n\n /**\n * Custom icon class for event out\n */\n readonly eventIcon = input<string>();\n\n /**\n * Whether the status should appear with a pulsing circle around the badge.\n *\n * @defaultValue false\n */\n readonly blink = input(false, { transform: booleanAttribute });\n\n /**\n * Blink pulse generator for synchronized blinking with other components\n */\n readonly blinkPulse = input<Observable<boolean>>();\n\n /**\n * Aria label for icon and status combo. Needed for a11y\n */\n readonly ariaLabel = input<string>();\n\n protected readonly backgroundClass = computed(() => this.statusIcon()?.background ?? '');\n protected readonly theAriaLabel = computed(() => this.ariaLabel() ?? this.autoLabel());\n protected readonly autoLabel = computed(() => {\n const status = this.status();\n const statusName = status && this.statusIcons[status] ? status : 'none';\n const direction = this.eventOut() ? ' out' : '';\n const iconName = this.icon()?.replace(/^element-{0,1}(.+)/, '$1 ') ?? '';\n return `${iconName.toLocaleLowerCase()}${\n this.status() && this.icon() ? 'in ' : ''\n }status ${statusName}${direction}`;\n });\n protected readonly statusIcon = computed<StatusIcon | undefined>(() => {\n const status = this.status();\n return status ? this.statusIcons[status] : undefined;\n });\n protected readonly blinkOn = signal(false);\n protected readonly contrastFix = signal(false);\n protected readonly icons = addIcons({ elementRight4 });\n private blinkSubs?: Subscription;\n\n private readonly bg = viewChild.required<ElementRef>('bg');\n\n private blinkService = inject(BlinkService);\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.blinkService && changes.blink) {\n this.blinkSubs?.unsubscribe();\n\n if (this.blink()) {\n const pulse = this.blinkPulse() ?? this.blinkService.pulse$;\n this.blinkSubs = pulse.subscribe(onOff => {\n this.blinkOn.set(onOff);\n });\n } else {\n this.blinkOn.set(false);\n }\n }\n if (changes.color || changes.blink) {\n queueMicrotask(() => {\n this.contrastFix.set(!!this.color() && this.blink() && this.calculateContrastFix());\n });\n }\n }\n\n ngOnDestroy(): void {\n this.blinkSubs?.unsubscribe();\n }\n\n private calculateContrastFix(): boolean {\n // see https://www.w3.org/TR/AERT/#color-contrast\n const rgb = getComputedStyle(this.bg().nativeElement)\n .backgroundColor?.match(/\\d+/g)\n ?.map(v => +v);\n return !!rgb && Math.round((rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000) <= 128;\n }\n}\n","<div\n class=\"status-indication d-flex align-items-center justify-content-center\"\n role=\"status\"\n [class.has-icon]=\"icon()\"\n [class.small]=\"size() === 'small'\"\n [attr.aria-label]=\"theAriaLabel() | translate\"\n>\n <div\n #bg\n class=\"bg\"\n [class.pulse]=\"blinkOn()\"\n [class.deprecated-color]=\"!status()\"\n [class.contrast-fix]=\"contrastFix()\"\n [ngClass]=\"backgroundClass()\"\n [style.background-color]=\"color()\"\n ></div>\n @if (!status()) {\n <div class=\"deprecated-dot\" [style.background-color]=\"color()\"></div>\n }\n @let iconConfig = statusIcon();\n @if (iconConfig) {\n <span class=\"status-icon icon-stack indicator\">\n <si-icon class=\"status-icon\" [ngClass]=\"iconConfig.color\" [icon]=\"iconConfig.icon\" />\n <si-icon\n class=\"status-icon\"\n [ngClass]=\"iconConfig.stackedColor\"\n [icon]=\"iconConfig.stacked\"\n />\n </span>\n }\n @let eventIconValue = eventIcon();\n @if (eventOut()) {\n <si-icon class=\"icon text-body event-out flip-rtl\" [icon]=\"icons.elementRight4\" />\n } @else if (eventIconValue) {\n <si-icon class=\"icon text-body event-out\" [icon]=\"eventIconValue\" />\n }\n @let iconValue = icon();\n @if (iconValue) {\n <si-icon class=\"icon position-relative text-body\" [icon]=\"iconValue\" />\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiCircleStatusComponent } from './si-circle-status.component';\n\n@NgModule({\n imports: [SiCircleStatusComponent],\n exports: [SiCircleStatusComponent]\n})\nexport class SiCircleStatusModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-circle-status.component';\nexport * from './si-circle-status.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -9,9 +9,8 @@ class SiDatatableInteractionDirective {
|
|
|
9
9
|
/**
|
|
10
10
|
* The selection type of the datatable, will automatically be set if set for datatable.
|
|
11
11
|
*
|
|
12
|
-
* @defaultValue ''
|
|
13
12
|
*/
|
|
14
|
-
selectionType = input(
|
|
13
|
+
selectionType = input();
|
|
15
14
|
/**
|
|
16
15
|
* Automatically select every row or cell that is navigated trough.
|
|
17
16
|
* Is ignored unless `selectionType` is `single` or `cell`.
|
|
@@ -41,6 +40,7 @@ class SiDatatableInteractionDirective {
|
|
|
41
40
|
last.focus();
|
|
42
41
|
}
|
|
43
42
|
}
|
|
43
|
+
event.preventDefault();
|
|
44
44
|
}
|
|
45
45
|
onMousedown(event) {
|
|
46
46
|
this.isMousedown = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-datatable.mjs","sources":["../../../../projects/element-ng/datatable/si-datatable-interaction.directive.ts","../../../../projects/element-ng/datatable/si-datatable.module.ts","../../../../projects/element-ng/datatable/index.ts","../../../../projects/element-ng/datatable/siemens-element-ng-datatable.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n input,\n OnDestroy,\n OnInit\n} from '@angular/core';\n\n@Directive({\n selector: '[siDatatableInteraction]',\n exportAs: 'si-datatable-interaction'\n})\nexport class SiDatatableInteractionDirective implements OnDestroy, OnInit {\n /**\n * The selection type of the datatable, will automatically be set if set for datatable.\n *\n * @defaultValue ''\n */\n readonly selectionType = input('');\n\n /**\n * Automatically select every row or cell that is navigated trough.\n * Is ignored unless `selectionType` is `single` or `cell`.\n *\n * @defaultValue false\n */\n readonly datatableInteractionAutoSelect = input(false, { transform: booleanAttribute });\n\n @HostBinding('attr.tabindex') protected tabIndex = '0';\n\n private element: HTMLElement = inject(ElementRef).nativeElement;\n private tableBody?: HTMLElement;\n\n private autoSelectTimeout: any;\n\n private isMousedown = false;\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown') {\n const first =\n this.selectionType() === 'cell'\n ? this.element.querySelector(\n '.datatable-row-wrapper > .datatable-body-row .datatable-body-cell'\n )\n : this.element.querySelector('.datatable-row-wrapper > .datatable-body-row');\n if (first) {\n (first as HTMLElement).focus();\n }\n } else if (event.key === 'ArrowUp') {\n const last =\n this.selectionType() === 'cell'\n ? this.element.querySelector(\n '.datatable-row-wrapper:last-child > .datatable-body-row .datatable-body-cell'\n )\n : this.element.querySelector('.datatable-row-wrapper:last-child > .datatable-body-row');\n if (last) {\n (last as HTMLElement).focus();\n }\n }\n }\n\n @HostListener('mousedown', ['$event'])\n protected onMousedown(event: MouseEvent): void {\n this.isMousedown = true;\n }\n\n @HostListener('mouseup', ['$event'])\n protected onMouseup(event: MouseEvent): void {\n this.isMousedown = false;\n }\n\n @HostListener('focusin', ['$event'])\n protected onFocusin(event: FocusEvent): void {\n const target = event.target as HTMLElement;\n if (!target) {\n return;\n }\n\n clearTimeout(this.autoSelectTimeout);\n // Re-select on every element\n\n const selectionType = this.selectionType();\n if (\n !this.isMousedown &&\n this.datatableInteractionAutoSelect() &&\n (selectionType === 'single' || selectionType === 'cell')\n ) {\n const rowOrCell = target.closest(\n selectionType === 'cell' ? 'datatable-body-cell' : 'datatable-body-row'\n );\n if (!rowOrCell) {\n return;\n }\n this.autoSelectTimeout = setTimeout(() => {\n rowOrCell.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', keyCode: 13 }));\n }, 100);\n }\n if (this.element.classList.contains('virtualized')) {\n if (this.tableBody) {\n const lastList =\n selectionType === 'cell'\n ? this.tableBody.querySelectorAll(\n '.datatable-row-wrapper:last-child > .datatable-body-row .datatable-body-cell'\n )\n : this.tableBody.querySelectorAll(\n '.datatable-row-wrapper:last-child > .datatable-body-row'\n );\n if (Array.from(lastList).includes(target)) {\n this.tableBody.scrollTop = this.tableBody.scrollTop + lastList[0].clientHeight;\n } else {\n const firstList =\n selectionType === 'cell'\n ? this.tableBody.querySelectorAll(\n '.datatable-row-wrapper:first-child > .datatable-body-row .datatable-body-cell'\n )\n : this.tableBody.querySelectorAll(\n '.datatable-row-wrapper:first-child > .datatable-body-row'\n );\n if (Array.from(firstList).includes(target)) {\n this.tableBody.scrollTop = this.tableBody.scrollTop - firstList[0].clientHeight;\n }\n }\n }\n }\n }\n\n ngOnInit(): void {\n this.tableBody = this.element.querySelector('datatable-body') as HTMLElement;\n if (this.tableBody) {\n this.tableBody.tabIndex = -1;\n }\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.autoSelectTimeout);\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiDatatableInteractionDirective } from './si-datatable-interaction.directive';\n\n@NgModule({\n imports: [SiDatatableInteractionDirective],\n exports: [SiDatatableInteractionDirective]\n})\nexport class SiDatatableModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Provider } from '@angular/core';\n\nexport * from './si-datatable-interaction.directive';\nexport * from './si-datatable.module';\n\n/*\n * Configuration interface for the upstream @siemens/ngx-datatable project.\n * See https://github.com/siemens/ngx-datatable/blob/6baa21a9aa37639c8060b0f6c4040ae242186517/projects/ngx-datatable/src/lib/ngx-datatable.module.ts#L107.\n */\nexport interface INgxDatatableConfig {\n messages?: {\n emptyMessage: string;\n totalMessage: string;\n selectedMessage: string;\n };\n cssClasses?: {\n sortAscending: string;\n sortDescending: string;\n sortUnset: string;\n pagerLeftArrow: string;\n pagerRightArrow: string;\n pagerPrevious: string;\n pagerNext: string;\n };\n headerHeight?: number;\n footerHeight?: number;\n rowHeight?: number;\n}\n\n/*\n * Extends the original INgxDatatableConfig with additional properties and makes all fields required to maintain compatibility.\n */\ninterface SiDatatableConfig extends INgxDatatableConfig {\n cssClasses: Exclude<INgxDatatableConfig['cssClasses'], undefined>;\n headerHeight: number;\n footerHeight: number;\n rowHeight: number;\n rowHeightSmall: number;\n rowHeightExtraSmall: number;\n rowHeightTiny: number;\n}\n\nexport const SI_DATATABLE_CONFIG: SiDatatableConfig = {\n cssClasses: {\n sortAscending: 'icon element-sort-up text-primary',\n sortDescending: 'icon element-sort-down text-primary',\n pagerLeftArrow: 'icon element-left-2 flip-rtl',\n pagerRightArrow: 'icon element-right-2 flip-rtl',\n pagerPrevious: 'icon element-double-left flip-rtl',\n pagerNext: 'icon element-double-right flip-rtl',\n sortUnset: ''\n },\n headerHeight: 40,\n footerHeight: 40,\n rowHeight: 64,\n rowHeightSmall: 48,\n rowHeightExtraSmall: 32,\n rowHeightTiny: 24\n};\n\n/**\n * Provides element configuration for the \\@siemens/ngx-datatable.\n *\n * @param configOverrides - overrides that will be merged with the element configuration.\n */\nexport const provideSiDatatableConfig = (configOverrides?: INgxDatatableConfig): Provider => ({\n provide: 'configuration',\n useValue: { ...SI_DATATABLE_CONFIG, ...configOverrides }\n});\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-datatable.mjs","sources":["../../../../projects/element-ng/datatable/si-datatable-interaction.directive.ts","../../../../projects/element-ng/datatable/si-datatable.module.ts","../../../../projects/element-ng/datatable/index.ts","../../../../projects/element-ng/datatable/siemens-element-ng-datatable.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n input,\n OnDestroy,\n OnInit\n} from '@angular/core';\n\n@Directive({\n selector: '[siDatatableInteraction]',\n exportAs: 'si-datatable-interaction'\n})\nexport class SiDatatableInteractionDirective implements OnDestroy, OnInit {\n /**\n * The selection type of the datatable, will automatically be set if set for datatable.\n *\n */\n readonly selectionType = input<'single' | 'multi' | 'multiClick' | 'cell' | 'checkbox'>();\n\n /**\n * Automatically select every row or cell that is navigated trough.\n * Is ignored unless `selectionType` is `single` or `cell`.\n *\n * @defaultValue false\n */\n readonly datatableInteractionAutoSelect = input(false, { transform: booleanAttribute });\n\n @HostBinding('attr.tabindex') protected tabIndex = '0';\n\n private element: HTMLElement = inject(ElementRef).nativeElement;\n private tableBody?: HTMLElement;\n\n private autoSelectTimeout: any;\n\n private isMousedown = false;\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown') {\n const first =\n this.selectionType() === 'cell'\n ? this.element.querySelector(\n '.datatable-row-wrapper > .datatable-body-row .datatable-body-cell'\n )\n : this.element.querySelector('.datatable-row-wrapper > .datatable-body-row');\n if (first) {\n (first as HTMLElement).focus();\n }\n } else if (event.key === 'ArrowUp') {\n const last =\n this.selectionType() === 'cell'\n ? this.element.querySelector(\n '.datatable-row-wrapper:last-child > .datatable-body-row .datatable-body-cell'\n )\n : this.element.querySelector('.datatable-row-wrapper:last-child > .datatable-body-row');\n if (last) {\n (last as HTMLElement).focus();\n }\n }\n event.preventDefault();\n }\n\n @HostListener('mousedown', ['$event'])\n protected onMousedown(event: MouseEvent): void {\n this.isMousedown = true;\n }\n\n @HostListener('mouseup', ['$event'])\n protected onMouseup(event: MouseEvent): void {\n this.isMousedown = false;\n }\n\n @HostListener('focusin', ['$event'])\n protected onFocusin(event: FocusEvent): void {\n const target = event.target as HTMLElement;\n if (!target) {\n return;\n }\n\n clearTimeout(this.autoSelectTimeout);\n // Re-select on every element\n\n const selectionType = this.selectionType();\n if (\n !this.isMousedown &&\n this.datatableInteractionAutoSelect() &&\n (selectionType === 'single' || selectionType === 'cell')\n ) {\n const rowOrCell = target.closest(\n selectionType === 'cell' ? 'datatable-body-cell' : 'datatable-body-row'\n );\n if (!rowOrCell) {\n return;\n }\n this.autoSelectTimeout = setTimeout(() => {\n rowOrCell.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', keyCode: 13 }));\n }, 100);\n }\n if (this.element.classList.contains('virtualized')) {\n if (this.tableBody) {\n const lastList =\n selectionType === 'cell'\n ? this.tableBody.querySelectorAll(\n '.datatable-row-wrapper:last-child > .datatable-body-row .datatable-body-cell'\n )\n : this.tableBody.querySelectorAll(\n '.datatable-row-wrapper:last-child > .datatable-body-row'\n );\n if (Array.from(lastList).includes(target)) {\n this.tableBody.scrollTop = this.tableBody.scrollTop + lastList[0].clientHeight;\n } else {\n const firstList =\n selectionType === 'cell'\n ? this.tableBody.querySelectorAll(\n '.datatable-row-wrapper:first-child > .datatable-body-row .datatable-body-cell'\n )\n : this.tableBody.querySelectorAll(\n '.datatable-row-wrapper:first-child > .datatable-body-row'\n );\n if (Array.from(firstList).includes(target)) {\n this.tableBody.scrollTop = this.tableBody.scrollTop - firstList[0].clientHeight;\n }\n }\n }\n }\n }\n\n ngOnInit(): void {\n this.tableBody = this.element.querySelector('datatable-body') as HTMLElement;\n if (this.tableBody) {\n this.tableBody.tabIndex = -1;\n }\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.autoSelectTimeout);\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiDatatableInteractionDirective } from './si-datatable-interaction.directive';\n\n@NgModule({\n imports: [SiDatatableInteractionDirective],\n exports: [SiDatatableInteractionDirective]\n})\nexport class SiDatatableModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Provider } from '@angular/core';\n\nexport * from './si-datatable-interaction.directive';\nexport * from './si-datatable.module';\n\n/*\n * Configuration interface for the upstream @siemens/ngx-datatable project.\n * See https://github.com/siemens/ngx-datatable/blob/6baa21a9aa37639c8060b0f6c4040ae242186517/projects/ngx-datatable/src/lib/ngx-datatable.module.ts#L107.\n */\nexport interface INgxDatatableConfig {\n messages?: {\n emptyMessage: string;\n totalMessage: string;\n selectedMessage: string;\n };\n cssClasses?: {\n sortAscending: string;\n sortDescending: string;\n sortUnset: string;\n pagerLeftArrow: string;\n pagerRightArrow: string;\n pagerPrevious: string;\n pagerNext: string;\n };\n headerHeight?: number;\n footerHeight?: number;\n rowHeight?: number;\n}\n\n/*\n * Extends the original INgxDatatableConfig with additional properties and makes all fields required to maintain compatibility.\n */\ninterface SiDatatableConfig extends INgxDatatableConfig {\n cssClasses: Exclude<INgxDatatableConfig['cssClasses'], undefined>;\n headerHeight: number;\n footerHeight: number;\n rowHeight: number;\n rowHeightSmall: number;\n rowHeightExtraSmall: number;\n rowHeightTiny: number;\n}\n\nexport const SI_DATATABLE_CONFIG: SiDatatableConfig = {\n cssClasses: {\n sortAscending: 'icon element-sort-up text-primary',\n sortDescending: 'icon element-sort-down text-primary',\n pagerLeftArrow: 'icon element-left-2 flip-rtl',\n pagerRightArrow: 'icon element-right-2 flip-rtl',\n pagerPrevious: 'icon element-double-left flip-rtl',\n pagerNext: 'icon element-double-right flip-rtl',\n sortUnset: ''\n },\n headerHeight: 40,\n footerHeight: 40,\n rowHeight: 64,\n rowHeightSmall: 48,\n rowHeightExtraSmall: 32,\n rowHeightTiny: 24\n};\n\n/**\n * Provides element configuration for the \\@siemens/ngx-datatable.\n *\n * @param configOverrides - overrides that will be merged with the element configuration.\n */\nexport const provideSiDatatableConfig = (configOverrides?: INgxDatatableConfig): Provider => ({\n provide: 'configuration',\n useValue: { ...SI_DATATABLE_CONFIG, ...configOverrides }\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1049,7 +1049,7 @@ class SiFilteredSearchComponent {
|
|
|
1049
1049
|
}
|
|
1050
1050
|
}
|
|
1051
1051
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiFilteredSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1052
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: SiFilteredSearchComponent, isStandalone: true, selector: "si-filtered-search", inputs: { doSearchOnInputChange: { classPropertyName: "doSearchOnInputChange", publicName: "doSearchOnInputChange", isSignal: true, isRequired: false, transformFunction: null }, lazyCriterionProvider: { classPropertyName: "lazyCriterionProvider", publicName: "lazyCriterionProvider", isSignal: true, isRequired: false, transformFunction: null }, lazyValueProvider: { classPropertyName: "lazyValueProvider", publicName: "lazyValueProvider", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, strictCriterion: { classPropertyName: "strictCriterion", publicName: "strictCriterion", isSignal: true, isRequired: false, transformFunction: null }, strictValue: { classPropertyName: "strictValue", publicName: "strictValue", isSignal: true, isRequired: false, transformFunction: null }, onlySelectValue: { classPropertyName: "onlySelectValue", publicName: "onlySelectValue", isSignal: true, isRequired: false, transformFunction: null }, lazyLoadingDebounceTime: { classPropertyName: "lazyLoadingDebounceTime", publicName: "lazyLoadingDebounceTime", isSignal: true, isRequired: false, transformFunction: null }, searchDebounceTime: { classPropertyName: "searchDebounceTime", publicName: "searchDebounceTime", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, optionsInScrollableView: { classPropertyName: "optionsInScrollableView", publicName: "optionsInScrollableView", isSignal: true, isRequired: false, transformFunction: null }, searchCriteria: { classPropertyName: "searchCriteria", publicName: "searchCriteria", isSignal: true, isRequired: false, transformFunction: null }, criteria: { classPropertyName: "criteria", publicName: "criteria", isSignal: true, isRequired: false, transformFunction: null }, exclusiveCriteria: { classPropertyName: "exclusiveCriteria", publicName: "exclusiveCriteria", isSignal: true, isRequired: false, transformFunction: null }, maxCriteria: { classPropertyName: "maxCriteria", publicName: "maxCriteria", isSignal: true, isRequired: false, transformFunction: null }, maxCriteriaOptions: { classPropertyName: "maxCriteriaOptions", publicName: "maxCriteriaOptions", isSignal: true, isRequired: false, transformFunction: null }, searchLabel: { classPropertyName: "searchLabel", publicName: "searchLabel", isSignal: true, isRequired: false, transformFunction: null }, clearButtonLabel: { classPropertyName: "clearButtonLabel", publicName: "clearButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, submitButtonLabel: { classPropertyName: "submitButtonLabel", publicName: "submitButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, itemCountText: { classPropertyName: "itemCountText", publicName: "itemCountText", isSignal: true, isRequired: false, transformFunction: null }, colorVariant: { classPropertyName: "colorVariant", publicName: "colorVariant", isSignal: true, isRequired: false, transformFunction: null }, disableFreeTextSearch: { classPropertyName: "disableFreeTextSearch", publicName: "disableFreeTextSearch", isSignal: true, isRequired: false, transformFunction: null }, typeaheadOptionsLimit: { classPropertyName: "typeaheadOptionsLimit", publicName: "typeaheadOptionsLimit", isSignal: true, isRequired: false, transformFunction: null }, disableSelectionByColonAndSemicolon: { classPropertyName: "disableSelectionByColonAndSemicolon", publicName: "disableSelectionByColonAndSemicolon", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { doSearch: "doSearch", searchCriteria: "searchCriteriaChange", interceptDisplayedCriteria: "interceptDisplayedCriteria" }, host: { properties: { "class.disabled": "disabled()", "class.dark-background": "colorVariant() === 'base-0'" } }, viewQueries: [{ propertyName: "freeTextInputElement", first: true, predicate: ["freeTextInputElement"], descendants: true, isSignal: true }, { propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "valueComponents", predicate: SiFilteredSearchValueComponent, descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #scrollContainer\n class=\"search-container d-flex align-items-center overflow-auto py-2 w-100 ps-2 pe-2\"\n>\n @for (criterion of values; track criterion) {\n <si-filtered-search-value\n [editOnCreation]=\"autoEditCriteria\"\n [definition]=\"criterion.config\"\n [value]=\"criterion.value\"\n [invalidCriterion]=\"!validateCriterionLabel(criterion.config)\"\n [disabled]=\"disabled()\"\n [clearButtonLabel]=\"clearButtonLabel()\"\n [disableSelectionByColonAndSemicolon]=\"disableSelectionByColonAndSemicolon()\"\n [isStrictOrOnlySelectValue]=\"isStrictOrOnlySelectValue()\"\n [itemCountText]=\"itemCountText()\"\n [lazyValueProvider]=\"lazyValueProvider()\"\n [maxCriteriaOptions]=\"maxCriteriaOptions()\"\n [optionsInScrollableView]=\"optionsInScrollableView()\"\n [readonly]=\"readonly()\"\n [searchLabel]=\"searchLabel()\"\n [onlySelectValue]=\"onlySelectValue()\"\n [searchDebounceTime]=\"searchDebounceTime()\"\n (submitCriterion)=\"focusNext($index, $event)\"\n (deleteCriterion)=\"deleteCriterion(criterion.value, $index, $event)\"\n (valueChange)=\"valueChange($event, criterion)\"\n />\n }\n <!-- criterion input -->\n <input\n #freeTextInputElement\n type=\"text\"\n class=\"value-input ps-2 me-2 flex-grow-1\"\n typeaheadOptionField=\"translatedLabel\"\n [siTypeahead]=\"dataSource\"\n [typeaheadMinLength]=\"readonly() ? 1 : 0\"\n [typeaheadOptionsLimit]=\"typeaheadOptionsLimit()\"\n [typeaheadScrollable]=\"true\"\n [typeaheadOptionsInScrollableView]=\"optionsInScrollableView()\"\n [typeaheadAutoSelectIndex]=\"searchValue ? 0 : -1\"\n [readonly]=\"readonly()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder()\"\n [attr.aria-label]=\"searchLabel() | translate\"\n [value]=\"searchValue\"\n (focus)=\"freeTextFocus()\"\n (input)=\"freeTextInput($event)\"\n (keydown.backspace)=\"freeTextBackspace($event)\"\n (keydown.enter)=\"submit()\"\n (typeaheadOnSelect)=\"typeaheadOnSelectCriterion($event.option)\"\n />\n</div>\n<!-- clear all searchCriteria -->\n@if ((values.length || searchValue.length) && !readonly()) {\n <div class=\"clear-button-container\">\n <button\n type=\"button\"\n class=\"btn btn-circle btn-xs btn-ghost mx-2\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"clearButtonLabel() | translate\"\n (click)=\"deleteAllCriteria($event)\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n </div>\n}\n\n@if (!disabled()) {\n <button\n type=\"button\"\n class=\"search-button btn btn-circle btn-xs btn-secondary focus-inside\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"submitButtonLabel() | translate\"\n (click)=\"submit()\"\n >\n <si-icon [icon]=\"icons.elementSearch\" />\n </button>\n}\n", styles: [":host{--search-bar-icon-color: var(--element-text-primary);--input-background-color: var(--element-base-1);--input-background-hover-color: var(--element-base-1);--filter-search-background-color: var(--element-base-1);--filter-pill-background-color: var(--element-base-0);display:flex;align-items:center;line-height:24px;min-inline-size:0}:host.dark-background{--input-background-color: var(--element-base-0);--input-background-hover-color: var(--element-ui-4);--filter-search-background-color: var(--element-base-0);--filter-pill-background-color: var(--element-base-1)}:host.disabled{color:var(--element-text-disabled)}:host.disabled input,:host.disabled ::placeholder{color:var(--element-text-disabled)}:host si-filtered-search-value+input::placeholder{color:transparent}.search-container{border-start-start-radius:4px;border-end-start-radius:4px;background-color:var(--filter-search-background-color);gap:4px}input{background:transparent;border:0;padding-block:0}input:hover::placeholder{opacity:1}:host(.disabled) input::placeholder{opacity:var(--element-action-disabled-opacity)}.clear-button-container{display:flex;align-items:flex-start;align-self:stretch;padding-block:4px;background-color:var(--filter-search-background-color)}.search-button{align-self:stretch;background-color:var(--filter-search-background-color);border:0;border-radius:0;border-end-end-radius:4px;border-start-end-radius:4px;margin-block:0;margin-inline:1px 0;block-size:auto;inline-size:auto;padding-inline:4px!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "directive", type: SiTypeaheadDirective, selector: "[siTypeahead]", inputs: ["siTypeahead", "typeaheadProcess", "typeaheadScrollable", "typeaheadOptionsInScrollableView", "typeaheadOptionsLimit", "typeaheadScrollableAdditionalHeight", "typeaheadAutoSelectIndex", "typeaheadCloseOnEsc", "typeaheadClearValueOnSelect", "typeaheadWaitMs", "typeaheadMinLength", "typeaheadOptionField", "typeaheadMultiSelect", "typeaheadTokenize", "typeaheadMatchAllTokens", "typeaheadItemTemplate", "typeaheadSkipSortingMatches", "typeaheadAutocompleteListLabel", "typeaheadFullWidth"], outputs: ["typeaheadOnInput", "typeaheadOnSelect", "typeaheadOnFullMatch", "typeaheadOpenChange"], exportAs: ["si-typeahead"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }, { kind: "component", type: SiFilteredSearchValueComponent, selector: "si-filtered-search-value", inputs: ["value", "definition", "disabled", "readonly", "onlySelectValue", "maxCriteriaOptions", "optionsInScrollableView", "clearButtonLabel", "lazyValueProvider", "searchDebounceTime", "itemCountText", "disableSelectionByColonAndSemicolon", "searchLabel", "invalidCriterion", "isStrictOrOnlySelectValue", "editOnCreation"], outputs: ["valueChange", "deleteCriterion", "submitCriterion"] }] });
|
|
1052
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: SiFilteredSearchComponent, isStandalone: true, selector: "si-filtered-search", inputs: { doSearchOnInputChange: { classPropertyName: "doSearchOnInputChange", publicName: "doSearchOnInputChange", isSignal: true, isRequired: false, transformFunction: null }, lazyCriterionProvider: { classPropertyName: "lazyCriterionProvider", publicName: "lazyCriterionProvider", isSignal: true, isRequired: false, transformFunction: null }, lazyValueProvider: { classPropertyName: "lazyValueProvider", publicName: "lazyValueProvider", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, strictCriterion: { classPropertyName: "strictCriterion", publicName: "strictCriterion", isSignal: true, isRequired: false, transformFunction: null }, strictValue: { classPropertyName: "strictValue", publicName: "strictValue", isSignal: true, isRequired: false, transformFunction: null }, onlySelectValue: { classPropertyName: "onlySelectValue", publicName: "onlySelectValue", isSignal: true, isRequired: false, transformFunction: null }, lazyLoadingDebounceTime: { classPropertyName: "lazyLoadingDebounceTime", publicName: "lazyLoadingDebounceTime", isSignal: true, isRequired: false, transformFunction: null }, searchDebounceTime: { classPropertyName: "searchDebounceTime", publicName: "searchDebounceTime", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, optionsInScrollableView: { classPropertyName: "optionsInScrollableView", publicName: "optionsInScrollableView", isSignal: true, isRequired: false, transformFunction: null }, searchCriteria: { classPropertyName: "searchCriteria", publicName: "searchCriteria", isSignal: true, isRequired: false, transformFunction: null }, criteria: { classPropertyName: "criteria", publicName: "criteria", isSignal: true, isRequired: false, transformFunction: null }, exclusiveCriteria: { classPropertyName: "exclusiveCriteria", publicName: "exclusiveCriteria", isSignal: true, isRequired: false, transformFunction: null }, maxCriteria: { classPropertyName: "maxCriteria", publicName: "maxCriteria", isSignal: true, isRequired: false, transformFunction: null }, maxCriteriaOptions: { classPropertyName: "maxCriteriaOptions", publicName: "maxCriteriaOptions", isSignal: true, isRequired: false, transformFunction: null }, searchLabel: { classPropertyName: "searchLabel", publicName: "searchLabel", isSignal: true, isRequired: false, transformFunction: null }, clearButtonLabel: { classPropertyName: "clearButtonLabel", publicName: "clearButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, submitButtonLabel: { classPropertyName: "submitButtonLabel", publicName: "submitButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, itemCountText: { classPropertyName: "itemCountText", publicName: "itemCountText", isSignal: true, isRequired: false, transformFunction: null }, colorVariant: { classPropertyName: "colorVariant", publicName: "colorVariant", isSignal: true, isRequired: false, transformFunction: null }, disableFreeTextSearch: { classPropertyName: "disableFreeTextSearch", publicName: "disableFreeTextSearch", isSignal: true, isRequired: false, transformFunction: null }, typeaheadOptionsLimit: { classPropertyName: "typeaheadOptionsLimit", publicName: "typeaheadOptionsLimit", isSignal: true, isRequired: false, transformFunction: null }, disableSelectionByColonAndSemicolon: { classPropertyName: "disableSelectionByColonAndSemicolon", publicName: "disableSelectionByColonAndSemicolon", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { doSearch: "doSearch", searchCriteria: "searchCriteriaChange", interceptDisplayedCriteria: "interceptDisplayedCriteria" }, host: { properties: { "class.disabled": "disabled()", "class.dark-background": "colorVariant() === 'base-0'" } }, viewQueries: [{ propertyName: "freeTextInputElement", first: true, predicate: ["freeTextInputElement"], descendants: true, isSignal: true }, { propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "valueComponents", predicate: SiFilteredSearchValueComponent, descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #scrollContainer\n class=\"search-container d-flex align-items-center overflow-auto py-2 w-100 ps-2 pe-2\"\n>\n @for (criterion of values; track criterion) {\n <si-filtered-search-value\n [editOnCreation]=\"autoEditCriteria\"\n [definition]=\"criterion.config\"\n [value]=\"criterion.value\"\n [invalidCriterion]=\"!validateCriterionLabel(criterion.config)\"\n [disabled]=\"disabled()\"\n [clearButtonLabel]=\"clearButtonLabel()\"\n [disableSelectionByColonAndSemicolon]=\"disableSelectionByColonAndSemicolon()\"\n [isStrictOrOnlySelectValue]=\"isStrictOrOnlySelectValue()\"\n [itemCountText]=\"itemCountText()\"\n [lazyValueProvider]=\"lazyValueProvider()\"\n [maxCriteriaOptions]=\"maxCriteriaOptions()\"\n [optionsInScrollableView]=\"optionsInScrollableView()\"\n [readonly]=\"readonly()\"\n [searchLabel]=\"searchLabel()\"\n [onlySelectValue]=\"onlySelectValue()\"\n [searchDebounceTime]=\"searchDebounceTime()\"\n (submitCriterion)=\"focusNext($index, $event)\"\n (deleteCriterion)=\"deleteCriterion(criterion.value, $index, $event)\"\n (valueChange)=\"valueChange($event, criterion)\"\n />\n }\n <!-- criterion input -->\n <input\n #freeTextInputElement\n type=\"text\"\n class=\"value-input ps-2 me-2 flex-grow-1\"\n typeaheadOptionField=\"translatedLabel\"\n [siTypeahead]=\"dataSource\"\n [typeaheadMinLength]=\"readonly() ? 1 : 0\"\n [typeaheadOptionsLimit]=\"typeaheadOptionsLimit()\"\n [typeaheadScrollable]=\"true\"\n [typeaheadOptionsInScrollableView]=\"optionsInScrollableView()\"\n [typeaheadAutoSelectIndex]=\"searchValue ? 0 : -1\"\n [readonly]=\"readonly()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder()\"\n [attr.aria-label]=\"searchLabel() | translate\"\n [value]=\"searchValue\"\n (focus)=\"freeTextFocus()\"\n (input)=\"freeTextInput($event)\"\n (keydown.backspace)=\"freeTextBackspace($event)\"\n (keydown.enter)=\"submit()\"\n (typeaheadOnSelect)=\"typeaheadOnSelectCriterion($event.option)\"\n />\n</div>\n<!-- clear all searchCriteria -->\n@if ((values.length || searchValue.length) && !readonly()) {\n <div class=\"clear-button-container\">\n <button\n type=\"button\"\n class=\"btn btn-circle btn-xs btn-ghost mx-2\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"clearButtonLabel() | translate\"\n (click)=\"deleteAllCriteria($event)\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n </div>\n}\n\n@if (!disabled()) {\n <button\n type=\"button\"\n class=\"search-button btn btn-circle btn-xs btn-secondary focus-inside\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"submitButtonLabel() | translate\"\n (click)=\"submit()\"\n >\n <si-icon [icon]=\"icons.elementSearch\" />\n </button>\n}\n", styles: [":host{--search-bar-icon-color: var(--element-text-primary);--input-background-color: var(--element-base-1);--input-background-hover-color: var(--element-base-1);--filter-search-background-color: var(--element-base-1);--filter-pill-background-color: var(--element-base-4);display:flex;align-items:center;line-height:24px;min-inline-size:0}:host.dark-background{--input-background-color: var(--element-base-4);--input-background-hover-color: var(--element-ui-4);--filter-search-background-color: var(--element-base-4);--filter-pill-background-color: var(--element-base-1)}:host.disabled{color:var(--element-text-disabled)}:host.disabled input,:host.disabled ::placeholder{color:var(--element-text-disabled)}:host si-filtered-search-value+input::placeholder{color:transparent}.search-container{border-start-start-radius:4px;border-end-start-radius:4px;background-color:var(--filter-search-background-color);gap:4px}input{background:transparent;border:0;padding-block:0}input:hover::placeholder{opacity:1}:host(.disabled) input::placeholder{opacity:var(--element-action-disabled-opacity)}.clear-button-container{display:flex;align-items:flex-start;align-self:stretch;padding-block:4px;background-color:var(--filter-search-background-color)}.search-button{align-self:stretch;background-color:var(--filter-search-background-color);border:0;border-radius:0;border-end-end-radius:4px;border-start-end-radius:4px;margin-block:0;margin-inline:1px 0;block-size:auto;inline-size:auto;padding-inline:4px!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "directive", type: SiTypeaheadDirective, selector: "[siTypeahead]", inputs: ["siTypeahead", "typeaheadProcess", "typeaheadScrollable", "typeaheadOptionsInScrollableView", "typeaheadOptionsLimit", "typeaheadScrollableAdditionalHeight", "typeaheadAutoSelectIndex", "typeaheadCloseOnEsc", "typeaheadClearValueOnSelect", "typeaheadWaitMs", "typeaheadMinLength", "typeaheadOptionField", "typeaheadMultiSelect", "typeaheadTokenize", "typeaheadMatchAllTokens", "typeaheadItemTemplate", "typeaheadSkipSortingMatches", "typeaheadAutocompleteListLabel", "typeaheadFullWidth"], outputs: ["typeaheadOnInput", "typeaheadOnSelect", "typeaheadOnFullMatch", "typeaheadOpenChange"], exportAs: ["si-typeahead"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }, { kind: "component", type: SiFilteredSearchValueComponent, selector: "si-filtered-search-value", inputs: ["value", "definition", "disabled", "readonly", "onlySelectValue", "maxCriteriaOptions", "optionsInScrollableView", "clearButtonLabel", "lazyValueProvider", "searchDebounceTime", "itemCountText", "disableSelectionByColonAndSemicolon", "searchLabel", "invalidCriterion", "isStrictOrOnlySelectValue", "editOnCreation"], outputs: ["valueChange", "deleteCriterion", "submitCriterion"] }] });
|
|
1053
1053
|
}
|
|
1054
1054
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiFilteredSearchComponent, decorators: [{
|
|
1055
1055
|
type: Component,
|
|
@@ -1062,7 +1062,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
1062
1062
|
], host: {
|
|
1063
1063
|
'[class.disabled]': 'disabled()',
|
|
1064
1064
|
'[class.dark-background]': "colorVariant() === 'base-0'"
|
|
1065
|
-
}, template: "<div\n #scrollContainer\n class=\"search-container d-flex align-items-center overflow-auto py-2 w-100 ps-2 pe-2\"\n>\n @for (criterion of values; track criterion) {\n <si-filtered-search-value\n [editOnCreation]=\"autoEditCriteria\"\n [definition]=\"criterion.config\"\n [value]=\"criterion.value\"\n [invalidCriterion]=\"!validateCriterionLabel(criterion.config)\"\n [disabled]=\"disabled()\"\n [clearButtonLabel]=\"clearButtonLabel()\"\n [disableSelectionByColonAndSemicolon]=\"disableSelectionByColonAndSemicolon()\"\n [isStrictOrOnlySelectValue]=\"isStrictOrOnlySelectValue()\"\n [itemCountText]=\"itemCountText()\"\n [lazyValueProvider]=\"lazyValueProvider()\"\n [maxCriteriaOptions]=\"maxCriteriaOptions()\"\n [optionsInScrollableView]=\"optionsInScrollableView()\"\n [readonly]=\"readonly()\"\n [searchLabel]=\"searchLabel()\"\n [onlySelectValue]=\"onlySelectValue()\"\n [searchDebounceTime]=\"searchDebounceTime()\"\n (submitCriterion)=\"focusNext($index, $event)\"\n (deleteCriterion)=\"deleteCriterion(criterion.value, $index, $event)\"\n (valueChange)=\"valueChange($event, criterion)\"\n />\n }\n <!-- criterion input -->\n <input\n #freeTextInputElement\n type=\"text\"\n class=\"value-input ps-2 me-2 flex-grow-1\"\n typeaheadOptionField=\"translatedLabel\"\n [siTypeahead]=\"dataSource\"\n [typeaheadMinLength]=\"readonly() ? 1 : 0\"\n [typeaheadOptionsLimit]=\"typeaheadOptionsLimit()\"\n [typeaheadScrollable]=\"true\"\n [typeaheadOptionsInScrollableView]=\"optionsInScrollableView()\"\n [typeaheadAutoSelectIndex]=\"searchValue ? 0 : -1\"\n [readonly]=\"readonly()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder()\"\n [attr.aria-label]=\"searchLabel() | translate\"\n [value]=\"searchValue\"\n (focus)=\"freeTextFocus()\"\n (input)=\"freeTextInput($event)\"\n (keydown.backspace)=\"freeTextBackspace($event)\"\n (keydown.enter)=\"submit()\"\n (typeaheadOnSelect)=\"typeaheadOnSelectCriterion($event.option)\"\n />\n</div>\n<!-- clear all searchCriteria -->\n@if ((values.length || searchValue.length) && !readonly()) {\n <div class=\"clear-button-container\">\n <button\n type=\"button\"\n class=\"btn btn-circle btn-xs btn-ghost mx-2\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"clearButtonLabel() | translate\"\n (click)=\"deleteAllCriteria($event)\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n </div>\n}\n\n@if (!disabled()) {\n <button\n type=\"button\"\n class=\"search-button btn btn-circle btn-xs btn-secondary focus-inside\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"submitButtonLabel() | translate\"\n (click)=\"submit()\"\n >\n <si-icon [icon]=\"icons.elementSearch\" />\n </button>\n}\n", styles: [":host{--search-bar-icon-color: var(--element-text-primary);--input-background-color: var(--element-base-1);--input-background-hover-color: var(--element-base-1);--filter-search-background-color: var(--element-base-1);--filter-pill-background-color: var(--element-base-
|
|
1065
|
+
}, template: "<div\n #scrollContainer\n class=\"search-container d-flex align-items-center overflow-auto py-2 w-100 ps-2 pe-2\"\n>\n @for (criterion of values; track criterion) {\n <si-filtered-search-value\n [editOnCreation]=\"autoEditCriteria\"\n [definition]=\"criterion.config\"\n [value]=\"criterion.value\"\n [invalidCriterion]=\"!validateCriterionLabel(criterion.config)\"\n [disabled]=\"disabled()\"\n [clearButtonLabel]=\"clearButtonLabel()\"\n [disableSelectionByColonAndSemicolon]=\"disableSelectionByColonAndSemicolon()\"\n [isStrictOrOnlySelectValue]=\"isStrictOrOnlySelectValue()\"\n [itemCountText]=\"itemCountText()\"\n [lazyValueProvider]=\"lazyValueProvider()\"\n [maxCriteriaOptions]=\"maxCriteriaOptions()\"\n [optionsInScrollableView]=\"optionsInScrollableView()\"\n [readonly]=\"readonly()\"\n [searchLabel]=\"searchLabel()\"\n [onlySelectValue]=\"onlySelectValue()\"\n [searchDebounceTime]=\"searchDebounceTime()\"\n (submitCriterion)=\"focusNext($index, $event)\"\n (deleteCriterion)=\"deleteCriterion(criterion.value, $index, $event)\"\n (valueChange)=\"valueChange($event, criterion)\"\n />\n }\n <!-- criterion input -->\n <input\n #freeTextInputElement\n type=\"text\"\n class=\"value-input ps-2 me-2 flex-grow-1\"\n typeaheadOptionField=\"translatedLabel\"\n [siTypeahead]=\"dataSource\"\n [typeaheadMinLength]=\"readonly() ? 1 : 0\"\n [typeaheadOptionsLimit]=\"typeaheadOptionsLimit()\"\n [typeaheadScrollable]=\"true\"\n [typeaheadOptionsInScrollableView]=\"optionsInScrollableView()\"\n [typeaheadAutoSelectIndex]=\"searchValue ? 0 : -1\"\n [readonly]=\"readonly()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder()\"\n [attr.aria-label]=\"searchLabel() | translate\"\n [value]=\"searchValue\"\n (focus)=\"freeTextFocus()\"\n (input)=\"freeTextInput($event)\"\n (keydown.backspace)=\"freeTextBackspace($event)\"\n (keydown.enter)=\"submit()\"\n (typeaheadOnSelect)=\"typeaheadOnSelectCriterion($event.option)\"\n />\n</div>\n<!-- clear all searchCriteria -->\n@if ((values.length || searchValue.length) && !readonly()) {\n <div class=\"clear-button-container\">\n <button\n type=\"button\"\n class=\"btn btn-circle btn-xs btn-ghost mx-2\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"clearButtonLabel() | translate\"\n (click)=\"deleteAllCriteria($event)\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n </div>\n}\n\n@if (!disabled()) {\n <button\n type=\"button\"\n class=\"search-button btn btn-circle btn-xs btn-secondary focus-inside\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"submitButtonLabel() | translate\"\n (click)=\"submit()\"\n >\n <si-icon [icon]=\"icons.elementSearch\" />\n </button>\n}\n", styles: [":host{--search-bar-icon-color: var(--element-text-primary);--input-background-color: var(--element-base-1);--input-background-hover-color: var(--element-base-1);--filter-search-background-color: var(--element-base-1);--filter-pill-background-color: var(--element-base-4);display:flex;align-items:center;line-height:24px;min-inline-size:0}:host.dark-background{--input-background-color: var(--element-base-4);--input-background-hover-color: var(--element-ui-4);--filter-search-background-color: var(--element-base-4);--filter-pill-background-color: var(--element-base-1)}:host.disabled{color:var(--element-text-disabled)}:host.disabled input,:host.disabled ::placeholder{color:var(--element-text-disabled)}:host si-filtered-search-value+input::placeholder{color:transparent}.search-container{border-start-start-radius:4px;border-end-start-radius:4px;background-color:var(--filter-search-background-color);gap:4px}input{background:transparent;border:0;padding-block:0}input:hover::placeholder{opacity:1}:host(.disabled) input::placeholder{opacity:var(--element-action-disabled-opacity)}.clear-button-container{display:flex;align-items:flex-start;align-self:stretch;padding-block:4px;background-color:var(--filter-search-background-color)}.search-button{align-self:stretch;background-color:var(--filter-search-background-color);border:0;border-radius:0;border-end-end-radius:4px;border-start-end-radius:4px;margin-block:0;margin-inline:1px 0;block-size:auto;inline-size:auto;padding-inline:4px!important}\n"] }]
|
|
1066
1066
|
}], ctorParameters: () => [] });
|
|
1067
1067
|
|
|
1068
1068
|
/**
|
|
@@ -7,6 +7,7 @@ import { TemplatePortal } from '@angular/cdk/portal';
|
|
|
7
7
|
import { Subject, of } from 'rxjs';
|
|
8
8
|
import { take, skip, takeUntil, filter } from 'rxjs/operators';
|
|
9
9
|
import { NgClass } from '@angular/common';
|
|
10
|
+
import { SiIconComponent } from '@siemens/element-ng/icon';
|
|
10
11
|
import { SiLinkDirective } from '@siemens/element-ng/link';
|
|
11
12
|
import { SiTranslatePipe } from '@siemens/element-translate-ng/translate';
|
|
12
13
|
|
|
@@ -332,13 +333,13 @@ class SiHeaderDropdownItemComponent {
|
|
|
332
333
|
}
|
|
333
334
|
}
|
|
334
335
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiHeaderDropdownItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
335
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: SiHeaderDropdownItemComponent, isStandalone: true, selector: "si-header-dropdown-item, a[si-header-dropdown-item], button[si-header-dropdown-item]", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, badge: { classPropertyName: "badge", publicName: "badge", isSignal: true, isRequired: false, transformFunction: null }, iconBadge: { classPropertyName: "iconBadge", publicName: "iconBadge", isSignal: true, isRequired: false, transformFunction: null }, badgeColor: { classPropertyName: "badgeColor", publicName: "badgeColor", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "click()" }, classAttribute: "dropdown-item focus-inside" }, ngImport: i0, template: "@if (icon()) {\n <
|
|
336
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: SiHeaderDropdownItemComponent, isStandalone: true, selector: "si-header-dropdown-item, a[si-header-dropdown-item], button[si-header-dropdown-item]", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, badge: { classPropertyName: "badge", publicName: "badge", isSignal: true, isRequired: false, transformFunction: null }, iconBadge: { classPropertyName: "iconBadge", publicName: "iconBadge", isSignal: true, isRequired: false, transformFunction: null }, badgeColor: { classPropertyName: "badgeColor", publicName: "badgeColor", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "click()" }, classAttribute: "dropdown-item focus-inside" }, ngImport: i0, template: "@if (icon()) {\n <si-icon class=\"icon\" [icon]=\"icon()!\" />\n}\n@if (iconBadge()) {\n <div class=\"badge-text\">{{ iconBadge() }}</div>\n}\n<span class=\"item-title text-truncate\">\n <ng-content />\n</span>\n<div class=\"item-end ps-2 d-flex me-n3 ms-auto gap-1\">\n @if (badge()) {\n <span class=\"mx-0 me-1 ms-2 badge\" [ngClass]=\"'bg-' + badgeColor()\">{{ badge() }}</span>\n }\n @if (checked() === 'check') {\n <div class=\"element-ok icon\" aria-hidden=\"true\"></div>\n }\n @if (checked() === 'radio') {\n <div class=\"element-record-filled icon-small me-2\" aria-hidden=\"true\"></div>\n }\n @if (ownTrigger) {\n <span class=\"element-down-2 dropdown-caret m-0 ps-0\" aria-hidden=\"true\"></span>\n }\n</div>\n", styles: [".item-end:empty{display:none!important}:host-context(.dropdown-menu .dropdown-menu){padding-inline-start:28px}.dropdown-caret{transform-origin:initial}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
336
337
|
}
|
|
337
338
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiHeaderDropdownItemComponent, decorators: [{
|
|
338
339
|
type: Component,
|
|
339
|
-
args: [{ selector: 'si-header-dropdown-item, a[si-header-dropdown-item], button[si-header-dropdown-item]', imports: [NgClass], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
340
|
+
args: [{ selector: 'si-header-dropdown-item, a[si-header-dropdown-item], button[si-header-dropdown-item]', imports: [NgClass, SiIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
340
341
|
class: 'dropdown-item focus-inside'
|
|
341
|
-
}, template: "@if (icon()) {\n <
|
|
342
|
+
}, template: "@if (icon()) {\n <si-icon class=\"icon\" [icon]=\"icon()!\" />\n}\n@if (iconBadge()) {\n <div class=\"badge-text\">{{ iconBadge() }}</div>\n}\n<span class=\"item-title text-truncate\">\n <ng-content />\n</span>\n<div class=\"item-end ps-2 d-flex me-n3 ms-auto gap-1\">\n @if (badge()) {\n <span class=\"mx-0 me-1 ms-2 badge\" [ngClass]=\"'bg-' + badgeColor()\">{{ badge() }}</span>\n }\n @if (checked() === 'check') {\n <div class=\"element-ok icon\" aria-hidden=\"true\"></div>\n }\n @if (checked() === 'radio') {\n <div class=\"element-record-filled icon-small me-2\" aria-hidden=\"true\"></div>\n }\n @if (ownTrigger) {\n <span class=\"element-down-2 dropdown-caret m-0 ps-0\" aria-hidden=\"true\"></span>\n }\n</div>\n", styles: [".item-end:empty{display:none!important}:host-context(.dropdown-menu .dropdown-menu){padding-inline-start:28px}.dropdown-caret{transform-origin:initial}\n"] }]
|
|
342
343
|
}], propDecorators: { click: [{
|
|
343
344
|
type: HostListener,
|
|
344
345
|
args: ['click']
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siemens-element-ng-header-dropdown.mjs","sources":["../../../../projects/element-ng/header-dropdown/si-header.model.ts","../../../../projects/element-ng/header-dropdown/si-header-dropdown-trigger.directive.ts","../../../../projects/element-ng/header-dropdown/si-header-dropdown.component.ts","../../../../projects/element-ng/header-dropdown/si-header-dropdown.component.html","../../../../projects/element-ng/header-dropdown/si-header-dropdown-item.component.ts","../../../../projects/element-ng/header-dropdown/si-header-dropdown-item.component.html","../../../../projects/element-ng/header-dropdown/si-header-dropdown-items-factory.component.ts","../../../../projects/element-ng/header-dropdown/si-header-dropdown-items-factory.component.html","../../../../projects/element-ng/header-dropdown/index.ts","../../../../projects/element-ng/header-dropdown/siemens-element-ng-header-dropdown.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { SiHeaderDropdownTriggerDirective } from './si-header-dropdown-trigger.directive';\n\n/** @internal */\nexport interface HeaderWithDropdowns {\n /** Called whenever an item is triggered that is not opening another dropdown. */\n onDropdownItemTriggered?(): void;\n /** Whether the dropdown should be opened inline. */\n inlineDropdown?: Observable<boolean>;\n /** The position of the dropdown if opened in an overlay. */\n overlayPosition?: ConnectedPosition[];\n /** Called whenever a dropdown is opened **/\n dropdownOpened?(trigger: SiHeaderDropdownTriggerDirective): void;\n /** Called whenever a dropdown is close **/\n dropdownClosed?(trigger: SiHeaderDropdownTriggerDirective): void;\n}\n\n/** @internal */\nexport const SI_HEADER_WITH_DROPDOWNS = new InjectionToken<HeaderWithDropdowns>(\n 'si-header.with-dropdowns'\n);\n\n/**\n * Can be used to pass context-specific options to a header-dropdown\n * that should / or cannot be provided by a consuming application.\n * @internal\n */\nexport interface HeaderDropdownOptions {\n /**\n * If the inline navbar is already wrapped in a focus trap,\n * set this property to prevent the header-dropdown from creating a focus trap.\n */\n disableRootFocusTrapForInlineMode: boolean;\n}\n\n/** @internal */\nexport const SI_HEADER_DROPDOWN_OPTIONS = new InjectionToken<HeaderDropdownOptions>(\n 'si-header-dropdown.options'\n);\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n Component,\n ComponentRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n HostBinding,\n HostListener,\n inject,\n Injector,\n input,\n OnChanges,\n OnDestroy,\n OnInit,\n output,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\nimport { of, Subject } from 'rxjs';\nimport { filter, skip, take, takeUntil } from 'rxjs/operators';\n\nimport { SI_HEADER_WITH_DROPDOWNS } from './si-header.model';\n\n@Component({ template: '', host: { '[attr.aria-owns]': 'ariaOwns()' } })\nclass SiHeaderAnchorComponent {\n readonly ariaOwns = input<string>();\n}\n\n/**\n * Trigger to open dropdowns in a navbar.\n * A dropdown will always be attached to the view, even if not visible.\n *\n * If a dropdown is opened in desktop mode, it will be reattached to an overlay while being opened.\n */\n@Directive({\n selector: '[siHeaderDropdownTriggerFor]',\n host: {\n class: 'dropdown-toggle'\n },\n exportAs: 'siHeaderDropdownTrigger'\n})\nexport class SiHeaderDropdownTriggerDirective implements OnChanges, OnInit, OnDestroy {\n private static idCounter = 0;\n\n /** Template that be rendered inside the dropdown. */\n readonly dropdown = input.required<TemplateRef<unknown>>({ alias: 'siHeaderDropdownTriggerFor' });\n /** Data that should be passed as template context to the dropdown. */\n readonly dropdownData = input<unknown>();\n /** Emits whenever a dropdown is opened or closed. */\n readonly openChange = output<boolean>();\n\n private readonly dropdownClose = new Subject<void>();\n\n /** Child triggers will set themselves here if they are open. */\n private openSubmenu?: SiHeaderDropdownTriggerDirective;\n\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly overlay = inject(Overlay);\n private readonly parent = inject(SiHeaderDropdownTriggerDirective, {\n optional: true,\n skipSelf: true\n });\n /** @internal */\n readonly navbar = inject(SI_HEADER_WITH_DROPDOWNS, { optional: true });\n\n // we need to create a new injector, so that the parent can be injected properly\n private readonly injector = Injector.create({ parent: inject(Injector), providers: [] });\n private viewRef?: EmbeddedViewRef<unknown>;\n private portal?: TemplatePortal<unknown>;\n private overlayRef?: OverlayRef;\n\n /** @internal */\n readonly level: number = this.parent ? this.parent.level + 1 : 1;\n\n // used to prevent immediate re-creation of the overlay if this trigger was clicked while overlay is open\n private destroying = false;\n\n /** @internal */\n @HostBinding('id') readonly id =\n `si-navbar-dropdown-trigger-${SiHeaderDropdownTriggerDirective.idCounter++}`;\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n @HostBinding('class.show') @HostBinding('attr.aria-expanded') protected _isOpen = false;\n\n /** @internal */\n @HostBinding('attr.aria-controls') readonly ariaControls =\n `si-navbar-dropdown-${SiHeaderDropdownTriggerDirective.idCounter}`;\n\n private headerAnchorComponentRef?: ComponentRef<SiHeaderAnchorComponent>;\n\n /** Whether the dropdown is open. */\n get isOpen(): boolean {\n return this._isOpen;\n }\n\n /** @internal */\n get isOverlay(): boolean {\n return !!this.overlayRef;\n }\n\n ngOnChanges(): void {\n if (this.portal) {\n this.portal.templateRef = this.dropdown();\n this.portal.context = this.dropdownData();\n }\n }\n\n ngOnInit(): void {\n // Always attach the dropdown, so that it can be used with routerLinkActive\n this.attachDropdownInline();\n }\n\n ngOnDestroy(): void {\n this.close();\n this.dropdownClose.complete();\n }\n\n /** Opens the dropdown. */\n open(): void {\n if (this.destroying || this._isOpen) {\n return;\n }\n\n (this.navbar?.inlineDropdown ?? of(false)).pipe(take(1)).subscribe(inline => {\n this._isOpen = true;\n if (!inline) {\n this.attachDropdownOverlay();\n }\n this.navbar?.inlineDropdown\n ?.pipe(skip(1), takeUntil(this.dropdownClose))\n .subscribe(() => this.close());\n });\n\n if (this.parent) {\n this.parent.openSubmenu = this;\n }\n\n if (this.navbar?.dropdownOpened) {\n this.navbar?.dropdownOpened(this);\n }\n this.openChange.emit(true);\n }\n\n /** Closes the dropdown. */\n close(options?: { all?: boolean }): void {\n if (!this._isOpen) {\n return;\n }\n\n if (this.openSubmenu) {\n this.openSubmenu.close();\n }\n\n this.dropdownClose.next();\n this._isOpen = false;\n if (this.overlayRef) {\n this.destroying = true;\n this.overlayRef.detach();\n this.overlayRef.dispose();\n this.viewRef?.destroy();\n this.portal = undefined;\n this.overlayRef = undefined;\n this.headerAnchorComponentRef?.destroy();\n // do not use queueMicrotask, it executed to early\n setTimeout(() => (this.destroying = false));\n this.attachDropdownInline();\n } else {\n this.viewRef?.markForCheck();\n }\n\n if (this.parent) {\n this.parent.openSubmenu = undefined;\n }\n\n if (options?.all && this.parent) {\n this.parent.close(options);\n } else {\n if (this.navbar?.dropdownClosed) {\n this.navbar?.dropdownClosed(this);\n }\n this.openChange.emit(false);\n }\n }\n\n @HostListener('click')\n protected click(): void {\n if (this._isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n private attachDropdownInline(): void {\n this.viewRef = this.viewContainerRef.createEmbeddedView(this.dropdown(), this.dropdownData(), {\n injector: this.injector\n });\n this.viewRef.markForCheck();\n }\n\n private attachDropdownOverlay(): void {\n this.viewRef?.destroy();\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withPositions(\n this.navbar?.overlayPosition ??\n (this.level > 1\n ? [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: 2\n }\n ]\n : [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: -4\n }\n ])\n )\n });\n this.portal = new TemplatePortal(\n this.dropdown(),\n this.viewContainerRef,\n this.dropdownData(),\n this.injector\n );\n this.viewRef = this.overlayRef.attach(this.portal);\n this.headerAnchorComponentRef = this.viewContainerRef.createComponent(SiHeaderAnchorComponent);\n this.headerAnchorComponentRef.setInput('ariaOwns', this.ariaControls);\n\n this.overlayRef\n .outsidePointerEvents()\n .pipe(\n filter(event => event.type === 'click'),\n filter(() => !this.openSubmenu),\n takeUntil(this.dropdownClose),\n take(1)\n )\n .subscribe(() => this.close());\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { A11yModule, CdkTrapFocus } from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n HostListener,\n inject,\n viewChild,\n DOCUMENT\n} from '@angular/core';\n\nimport { SiHeaderDropdownTriggerDirective } from './si-header-dropdown-trigger.directive';\nimport { SI_HEADER_DROPDOWN_OPTIONS } from './si-header.model';\n\n/**\n * Wrapper component for {@link SiHeaderDropdownItemComponent}.\n * Must only be opened using an {@link SiHeaderDropdownTriggerDirective}.\n */\n@Component({\n selector: 'si-header-dropdown',\n imports: [A11yModule],\n templateUrl: './si-header-dropdown.component.html',\n styles: ':host.sub-menu {min-inline-size: 200px}',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'dropdown-menu position-static',\n role: 'group',\n '[id]': 'trigger.ariaControls',\n '[attr.aria-labelledby]': 'trigger.id'\n }\n})\nexport class SiHeaderDropdownComponent {\n protected trigger = inject(SiHeaderDropdownTriggerDirective);\n\n private readonly focusTrap = viewChild.required(CdkTrapFocus);\n private previousElement: Element | null = null;\n private readonly document = inject(DOCUMENT);\n private readonly options = inject(SI_HEADER_DROPDOWN_OPTIONS, { optional: true });\n\n constructor() {\n // The autoFocus feature of the focus trap is not enough, as this component is not newly created when opened in mobile (inline).\n // But we still need autofocus in desktop mode, as the close event is never executed (component is destroyed before).\n this.trigger.openChange.subscribe(change => {\n if (!this.trigger.isOverlay && this.trapFocus && change) {\n this.previousElement = this.document.activeElement;\n this.focusTrap().focusTrap.focusFirstTabbableElementWhenReady();\n } else {\n if (\n this.previousElement &&\n 'focus' in this.previousElement &&\n typeof this.previousElement.focus === 'function'\n ) {\n this.previousElement.focus();\n }\n this.previousElement = null;\n }\n });\n }\n\n @HostBinding('class.show')\n protected get show(): boolean {\n return this.trigger.isOpen;\n }\n\n @HostBinding('class.sub-menu') protected get submenu(): boolean {\n return this.trigger.level > 1;\n }\n\n protected get trapFocus(): boolean {\n return (\n this.trigger.isOverlay ||\n (!this.options?.disableRootFocusTrapForInlineMode && this.trigger.level === 1)\n );\n }\n\n @HostListener('keydown.escape')\n protected escape(): void {\n this.trigger?.close();\n }\n}\n","<div [cdkTrapFocus]=\"trapFocus\" [cdkTrapFocusAutoCapture]=\"this.trigger.isOverlay\">\n <ng-content />\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostListener, inject, input } from '@angular/core';\n\nimport { SiHeaderDropdownTriggerDirective } from './si-header-dropdown-trigger.directive';\nimport { SI_HEADER_WITH_DROPDOWNS } from './si-header.model';\n\n/**\n * Creates a dropdown-item. Must be used within an {@link SiHeaderDropdownComponent}.\n */\n@Component({\n selector: 'si-header-dropdown-item, a[si-header-dropdown-item], button[si-header-dropdown-item]',\n imports: [NgClass],\n templateUrl: './si-header-dropdown-item.component.html',\n styleUrl: './si-header-dropdown-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'dropdown-item focus-inside'\n }\n})\nexport class SiHeaderDropdownItemComponent {\n /** Optional icon that will be rendered before the label. */\n readonly icon = input<string>();\n /** Badge that is rendered after the label. */\n readonly badge = input<string | number>();\n /** Badge (always red) that is attached to the icon. */\n readonly iconBadge = input<string | number>();\n /** Color of the badge (not iconBadge). */\n readonly badgeColor = input<string>();\n /** Whether the icon is checked with a radio or check mark. */\n readonly checked = input<'radio' | 'check' | ''>();\n\n protected readonly ownTrigger = inject(SiHeaderDropdownTriggerDirective, {\n self: true,\n optional: true\n });\n protected readonly parentTrigger = inject(SiHeaderDropdownTriggerDirective, { skipSelf: true });\n protected readonly navbar = inject(SI_HEADER_WITH_DROPDOWNS, { optional: true });\n\n @HostListener('click')\n protected click(): void {\n if (!this.ownTrigger) {\n this.parentTrigger.close({ all: true });\n if (this.navbar?.onDropdownItemTriggered) {\n this.navbar?.onDropdownItemTriggered();\n }\n }\n }\n}\n","@if (icon()) {\n <span\n class=\"icon\"\n aria-hidden=\"true\"\n [ngClass]=\"[icon(), ownTrigger?.isOpen ? icon() + '-filled' : '']\"\n ></span>\n}\n@if (iconBadge()) {\n <div class=\"badge-text\">{{ iconBadge() }}</div>\n}\n<span class=\"item-title text-truncate\">\n <ng-content />\n</span>\n<div class=\"item-end ps-2 d-flex me-n3 ms-auto gap-1\">\n @if (badge()) {\n <span class=\"mx-0 me-1 ms-2 badge\" [ngClass]=\"'bg-' + badgeColor()\">{{ badge() }}</span>\n }\n @if (checked() === 'check') {\n <div class=\"element-ok icon\" aria-hidden=\"true\"></div>\n }\n @if (checked() === 'radio') {\n <div class=\"element-record-filled icon-small me-2\" aria-hidden=\"true\"></div>\n }\n @if (ownTrigger) {\n <span class=\"element-down-2 dropdown-caret m-0 ps-0\" aria-hidden=\"true\"></span>\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Component, input, output } from '@angular/core';\nimport { MenuItem } from '@siemens/element-ng/common';\nimport { SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\n\nimport { SiHeaderDropdownItemComponent } from './si-header-dropdown-item.component';\nimport { SiHeaderDropdownTriggerDirective } from './si-header-dropdown-trigger.directive';\nimport { SiHeaderDropdownComponent } from './si-header-dropdown.component';\n\n/**\n * A factory to render multiple {@link MenuItem}.\n * Requires a wrapping {@link SiHeaderDropdownComponent}.\n *\n * @internal\n */\n@Component({\n selector: 'si-header-dropdown-items-factory',\n imports: [\n SiHeaderDropdownComponent,\n SiHeaderDropdownItemComponent,\n SiTranslatePipe,\n SiLinkDirective,\n SiHeaderDropdownTriggerDirective\n ],\n templateUrl: './si-header-dropdown-items-factory.component.html'\n})\nexport class SiHeaderDropdownItemsFactoryComponent {\n readonly items = input.required<MenuItem[]>();\n readonly activeChange = output<boolean>();\n}\n","@for (item of items(); track item) {\n @if (item.isHeading) {\n <div class=\"dropdown-item dropdown-header dropdown-item-static\">\n {{ item.title | translate }}\n </div>\n } @else {\n @if (item.title !== '-') {\n @if (item.items) {\n <button\n type=\"button\"\n si-header-dropdown-item\n [icon]=\"item.icon\"\n [badge]=\"item.badgeStyle !== 'dot' ? item.badge : undefined\"\n [badgeColor]=\"item.badgeColor\"\n [iconBadge]=\"item.badgeStyle === 'dot' ? item.badge : undefined\"\n [siHeaderDropdownTriggerFor]=\"dropdown\"\n >\n {{ item.title | translate }}\n </button>\n <ng-template #dropdown>\n <si-header-dropdown>\n <si-header-dropdown-items-factory [items]=\"item.items\" />\n </si-header-dropdown>\n </ng-template>\n } @else {\n <a\n si-header-dropdown-item\n activeClass=\"active\"\n [siLink]=\"item\"\n [icon]=\"item.icon\"\n [badge]=\"item.badgeStyle !== 'dot' ? item.badge : undefined\"\n [badgeColor]=\"item.badgeColor\"\n [iconBadge]=\"item.badgeStyle === 'dot' ? item.badge : undefined\"\n [checked]=\"item.selectionState\"\n (activeChange)=\"activeChange.emit($event)\"\n >\n {{ item.title | translate }}\n </a>\n }\n } @else {\n <div class=\"dropdown-divider\"></div>\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-header-dropdown.component';\nexport * from './si-header-dropdown-trigger.directive';\nexport * from './si-header-dropdown-item.component';\nexport * from './si-header-dropdown-items-factory.component';\nexport * from './si-header.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"siemens-element-ng-header-dropdown.mjs","sources":["../../../../projects/element-ng/header-dropdown/si-header.model.ts","../../../../projects/element-ng/header-dropdown/si-header-dropdown-trigger.directive.ts","../../../../projects/element-ng/header-dropdown/si-header-dropdown.component.ts","../../../../projects/element-ng/header-dropdown/si-header-dropdown.component.html","../../../../projects/element-ng/header-dropdown/si-header-dropdown-item.component.ts","../../../../projects/element-ng/header-dropdown/si-header-dropdown-item.component.html","../../../../projects/element-ng/header-dropdown/si-header-dropdown-items-factory.component.ts","../../../../projects/element-ng/header-dropdown/si-header-dropdown-items-factory.component.html","../../../../projects/element-ng/header-dropdown/index.ts","../../../../projects/element-ng/header-dropdown/siemens-element-ng-header-dropdown.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { SiHeaderDropdownTriggerDirective } from './si-header-dropdown-trigger.directive';\n\n/** @internal */\nexport interface HeaderWithDropdowns {\n /** Called whenever an item is triggered that is not opening another dropdown. */\n onDropdownItemTriggered?(): void;\n /** Whether the dropdown should be opened inline. */\n inlineDropdown?: Observable<boolean>;\n /** The position of the dropdown if opened in an overlay. */\n overlayPosition?: ConnectedPosition[];\n /** Called whenever a dropdown is opened **/\n dropdownOpened?(trigger: SiHeaderDropdownTriggerDirective): void;\n /** Called whenever a dropdown is close **/\n dropdownClosed?(trigger: SiHeaderDropdownTriggerDirective): void;\n}\n\n/** @internal */\nexport const SI_HEADER_WITH_DROPDOWNS = new InjectionToken<HeaderWithDropdowns>(\n 'si-header.with-dropdowns'\n);\n\n/**\n * Can be used to pass context-specific options to a header-dropdown\n * that should / or cannot be provided by a consuming application.\n * @internal\n */\nexport interface HeaderDropdownOptions {\n /**\n * If the inline navbar is already wrapped in a focus trap,\n * set this property to prevent the header-dropdown from creating a focus trap.\n */\n disableRootFocusTrapForInlineMode: boolean;\n}\n\n/** @internal */\nexport const SI_HEADER_DROPDOWN_OPTIONS = new InjectionToken<HeaderDropdownOptions>(\n 'si-header-dropdown.options'\n);\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n Component,\n ComponentRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n HostBinding,\n HostListener,\n inject,\n Injector,\n input,\n OnChanges,\n OnDestroy,\n OnInit,\n output,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\nimport { of, Subject } from 'rxjs';\nimport { filter, skip, take, takeUntil } from 'rxjs/operators';\n\nimport { SI_HEADER_WITH_DROPDOWNS } from './si-header.model';\n\n@Component({ template: '', host: { '[attr.aria-owns]': 'ariaOwns()' } })\nclass SiHeaderAnchorComponent {\n readonly ariaOwns = input<string>();\n}\n\n/**\n * Trigger to open dropdowns in a navbar.\n * A dropdown will always be attached to the view, even if not visible.\n *\n * If a dropdown is opened in desktop mode, it will be reattached to an overlay while being opened.\n */\n@Directive({\n selector: '[siHeaderDropdownTriggerFor]',\n host: {\n class: 'dropdown-toggle'\n },\n exportAs: 'siHeaderDropdownTrigger'\n})\nexport class SiHeaderDropdownTriggerDirective implements OnChanges, OnInit, OnDestroy {\n private static idCounter = 0;\n\n /** Template that be rendered inside the dropdown. */\n readonly dropdown = input.required<TemplateRef<unknown>>({ alias: 'siHeaderDropdownTriggerFor' });\n /** Data that should be passed as template context to the dropdown. */\n readonly dropdownData = input<unknown>();\n /** Emits whenever a dropdown is opened or closed. */\n readonly openChange = output<boolean>();\n\n private readonly dropdownClose = new Subject<void>();\n\n /** Child triggers will set themselves here if they are open. */\n private openSubmenu?: SiHeaderDropdownTriggerDirective;\n\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly overlay = inject(Overlay);\n private readonly parent = inject(SiHeaderDropdownTriggerDirective, {\n optional: true,\n skipSelf: true\n });\n /** @internal */\n readonly navbar = inject(SI_HEADER_WITH_DROPDOWNS, { optional: true });\n\n // we need to create a new injector, so that the parent can be injected properly\n private readonly injector = Injector.create({ parent: inject(Injector), providers: [] });\n private viewRef?: EmbeddedViewRef<unknown>;\n private portal?: TemplatePortal<unknown>;\n private overlayRef?: OverlayRef;\n\n /** @internal */\n readonly level: number = this.parent ? this.parent.level + 1 : 1;\n\n // used to prevent immediate re-creation of the overlay if this trigger was clicked while overlay is open\n private destroying = false;\n\n /** @internal */\n @HostBinding('id') readonly id =\n `si-navbar-dropdown-trigger-${SiHeaderDropdownTriggerDirective.idCounter++}`;\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n @HostBinding('class.show') @HostBinding('attr.aria-expanded') protected _isOpen = false;\n\n /** @internal */\n @HostBinding('attr.aria-controls') readonly ariaControls =\n `si-navbar-dropdown-${SiHeaderDropdownTriggerDirective.idCounter}`;\n\n private headerAnchorComponentRef?: ComponentRef<SiHeaderAnchorComponent>;\n\n /** Whether the dropdown is open. */\n get isOpen(): boolean {\n return this._isOpen;\n }\n\n /** @internal */\n get isOverlay(): boolean {\n return !!this.overlayRef;\n }\n\n ngOnChanges(): void {\n if (this.portal) {\n this.portal.templateRef = this.dropdown();\n this.portal.context = this.dropdownData();\n }\n }\n\n ngOnInit(): void {\n // Always attach the dropdown, so that it can be used with routerLinkActive\n this.attachDropdownInline();\n }\n\n ngOnDestroy(): void {\n this.close();\n this.dropdownClose.complete();\n }\n\n /** Opens the dropdown. */\n open(): void {\n if (this.destroying || this._isOpen) {\n return;\n }\n\n (this.navbar?.inlineDropdown ?? of(false)).pipe(take(1)).subscribe(inline => {\n this._isOpen = true;\n if (!inline) {\n this.attachDropdownOverlay();\n }\n this.navbar?.inlineDropdown\n ?.pipe(skip(1), takeUntil(this.dropdownClose))\n .subscribe(() => this.close());\n });\n\n if (this.parent) {\n this.parent.openSubmenu = this;\n }\n\n if (this.navbar?.dropdownOpened) {\n this.navbar?.dropdownOpened(this);\n }\n this.openChange.emit(true);\n }\n\n /** Closes the dropdown. */\n close(options?: { all?: boolean }): void {\n if (!this._isOpen) {\n return;\n }\n\n if (this.openSubmenu) {\n this.openSubmenu.close();\n }\n\n this.dropdownClose.next();\n this._isOpen = false;\n if (this.overlayRef) {\n this.destroying = true;\n this.overlayRef.detach();\n this.overlayRef.dispose();\n this.viewRef?.destroy();\n this.portal = undefined;\n this.overlayRef = undefined;\n this.headerAnchorComponentRef?.destroy();\n // do not use queueMicrotask, it executed to early\n setTimeout(() => (this.destroying = false));\n this.attachDropdownInline();\n } else {\n this.viewRef?.markForCheck();\n }\n\n if (this.parent) {\n this.parent.openSubmenu = undefined;\n }\n\n if (options?.all && this.parent) {\n this.parent.close(options);\n } else {\n if (this.navbar?.dropdownClosed) {\n this.navbar?.dropdownClosed(this);\n }\n this.openChange.emit(false);\n }\n }\n\n @HostListener('click')\n protected click(): void {\n if (this._isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n private attachDropdownInline(): void {\n this.viewRef = this.viewContainerRef.createEmbeddedView(this.dropdown(), this.dropdownData(), {\n injector: this.injector\n });\n this.viewRef.markForCheck();\n }\n\n private attachDropdownOverlay(): void {\n this.viewRef?.destroy();\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withPositions(\n this.navbar?.overlayPosition ??\n (this.level > 1\n ? [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: 2\n }\n ]\n : [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: -4\n }\n ])\n )\n });\n this.portal = new TemplatePortal(\n this.dropdown(),\n this.viewContainerRef,\n this.dropdownData(),\n this.injector\n );\n this.viewRef = this.overlayRef.attach(this.portal);\n this.headerAnchorComponentRef = this.viewContainerRef.createComponent(SiHeaderAnchorComponent);\n this.headerAnchorComponentRef.setInput('ariaOwns', this.ariaControls);\n\n this.overlayRef\n .outsidePointerEvents()\n .pipe(\n filter(event => event.type === 'click'),\n filter(() => !this.openSubmenu),\n takeUntil(this.dropdownClose),\n take(1)\n )\n .subscribe(() => this.close());\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { A11yModule, CdkTrapFocus } from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n HostListener,\n inject,\n viewChild,\n DOCUMENT\n} from '@angular/core';\n\nimport { SiHeaderDropdownTriggerDirective } from './si-header-dropdown-trigger.directive';\nimport { SI_HEADER_DROPDOWN_OPTIONS } from './si-header.model';\n\n/**\n * Wrapper component for {@link SiHeaderDropdownItemComponent}.\n * Must only be opened using an {@link SiHeaderDropdownTriggerDirective}.\n */\n@Component({\n selector: 'si-header-dropdown',\n imports: [A11yModule],\n templateUrl: './si-header-dropdown.component.html',\n styles: ':host.sub-menu {min-inline-size: 200px}',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'dropdown-menu position-static',\n role: 'group',\n '[id]': 'trigger.ariaControls',\n '[attr.aria-labelledby]': 'trigger.id'\n }\n})\nexport class SiHeaderDropdownComponent {\n protected trigger = inject(SiHeaderDropdownTriggerDirective);\n\n private readonly focusTrap = viewChild.required(CdkTrapFocus);\n private previousElement: Element | null = null;\n private readonly document = inject(DOCUMENT);\n private readonly options = inject(SI_HEADER_DROPDOWN_OPTIONS, { optional: true });\n\n constructor() {\n // The autoFocus feature of the focus trap is not enough, as this component is not newly created when opened in mobile (inline).\n // But we still need autofocus in desktop mode, as the close event is never executed (component is destroyed before).\n this.trigger.openChange.subscribe(change => {\n if (!this.trigger.isOverlay && this.trapFocus && change) {\n this.previousElement = this.document.activeElement;\n this.focusTrap().focusTrap.focusFirstTabbableElementWhenReady();\n } else {\n if (\n this.previousElement &&\n 'focus' in this.previousElement &&\n typeof this.previousElement.focus === 'function'\n ) {\n this.previousElement.focus();\n }\n this.previousElement = null;\n }\n });\n }\n\n @HostBinding('class.show')\n protected get show(): boolean {\n return this.trigger.isOpen;\n }\n\n @HostBinding('class.sub-menu') protected get submenu(): boolean {\n return this.trigger.level > 1;\n }\n\n protected get trapFocus(): boolean {\n return (\n this.trigger.isOverlay ||\n (!this.options?.disableRootFocusTrapForInlineMode && this.trigger.level === 1)\n );\n }\n\n @HostListener('keydown.escape')\n protected escape(): void {\n this.trigger?.close();\n }\n}\n","<div [cdkTrapFocus]=\"trapFocus\" [cdkTrapFocusAutoCapture]=\"this.trigger.isOverlay\">\n <ng-content />\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostListener, inject, input } from '@angular/core';\nimport { SiIconComponent } from '@siemens/element-ng/icon';\n\nimport { SiHeaderDropdownTriggerDirective } from './si-header-dropdown-trigger.directive';\nimport { SI_HEADER_WITH_DROPDOWNS } from './si-header.model';\n\n/**\n * Creates a dropdown-item. Must be used within an {@link SiHeaderDropdownComponent}.\n */\n@Component({\n selector: 'si-header-dropdown-item, a[si-header-dropdown-item], button[si-header-dropdown-item]',\n imports: [NgClass, SiIconComponent],\n templateUrl: './si-header-dropdown-item.component.html',\n styleUrl: './si-header-dropdown-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'dropdown-item focus-inside'\n }\n})\nexport class SiHeaderDropdownItemComponent {\n /** Optional icon that will be rendered before the label. */\n readonly icon = input<string>();\n /** Badge that is rendered after the label. */\n readonly badge = input<string | number>();\n /** Badge (always red) that is attached to the icon. */\n readonly iconBadge = input<string | number>();\n /** Color of the badge (not iconBadge). */\n readonly badgeColor = input<string>();\n /** Whether the icon is checked with a radio or check mark. */\n readonly checked = input<'radio' | 'check' | ''>();\n\n protected readonly ownTrigger = inject(SiHeaderDropdownTriggerDirective, {\n self: true,\n optional: true\n });\n protected readonly parentTrigger = inject(SiHeaderDropdownTriggerDirective, { skipSelf: true });\n protected readonly navbar = inject(SI_HEADER_WITH_DROPDOWNS, { optional: true });\n\n @HostListener('click')\n protected click(): void {\n if (!this.ownTrigger) {\n this.parentTrigger.close({ all: true });\n if (this.navbar?.onDropdownItemTriggered) {\n this.navbar?.onDropdownItemTriggered();\n }\n }\n }\n}\n","@if (icon()) {\n <si-icon class=\"icon\" [icon]=\"icon()!\" />\n}\n@if (iconBadge()) {\n <div class=\"badge-text\">{{ iconBadge() }}</div>\n}\n<span class=\"item-title text-truncate\">\n <ng-content />\n</span>\n<div class=\"item-end ps-2 d-flex me-n3 ms-auto gap-1\">\n @if (badge()) {\n <span class=\"mx-0 me-1 ms-2 badge\" [ngClass]=\"'bg-' + badgeColor()\">{{ badge() }}</span>\n }\n @if (checked() === 'check') {\n <div class=\"element-ok icon\" aria-hidden=\"true\"></div>\n }\n @if (checked() === 'radio') {\n <div class=\"element-record-filled icon-small me-2\" aria-hidden=\"true\"></div>\n }\n @if (ownTrigger) {\n <span class=\"element-down-2 dropdown-caret m-0 ps-0\" aria-hidden=\"true\"></span>\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Component, input, output } from '@angular/core';\nimport { MenuItem } from '@siemens/element-ng/common';\nimport { SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\n\nimport { SiHeaderDropdownItemComponent } from './si-header-dropdown-item.component';\nimport { SiHeaderDropdownTriggerDirective } from './si-header-dropdown-trigger.directive';\nimport { SiHeaderDropdownComponent } from './si-header-dropdown.component';\n\n/**\n * A factory to render multiple {@link MenuItem}.\n * Requires a wrapping {@link SiHeaderDropdownComponent}.\n *\n * @internal\n */\n@Component({\n selector: 'si-header-dropdown-items-factory',\n imports: [\n SiHeaderDropdownComponent,\n SiHeaderDropdownItemComponent,\n SiTranslatePipe,\n SiLinkDirective,\n SiHeaderDropdownTriggerDirective\n ],\n templateUrl: './si-header-dropdown-items-factory.component.html'\n})\nexport class SiHeaderDropdownItemsFactoryComponent {\n readonly items = input.required<MenuItem[]>();\n readonly activeChange = output<boolean>();\n}\n","@for (item of items(); track item) {\n @if (item.isHeading) {\n <div class=\"dropdown-item dropdown-header dropdown-item-static\">\n {{ item.title | translate }}\n </div>\n } @else {\n @if (item.title !== '-') {\n @if (item.items) {\n <button\n type=\"button\"\n si-header-dropdown-item\n [icon]=\"item.icon\"\n [badge]=\"item.badgeStyle !== 'dot' ? item.badge : undefined\"\n [badgeColor]=\"item.badgeColor\"\n [iconBadge]=\"item.badgeStyle === 'dot' ? item.badge : undefined\"\n [siHeaderDropdownTriggerFor]=\"dropdown\"\n >\n {{ item.title | translate }}\n </button>\n <ng-template #dropdown>\n <si-header-dropdown>\n <si-header-dropdown-items-factory [items]=\"item.items\" />\n </si-header-dropdown>\n </ng-template>\n } @else {\n <a\n si-header-dropdown-item\n activeClass=\"active\"\n [siLink]=\"item\"\n [icon]=\"item.icon\"\n [badge]=\"item.badgeStyle !== 'dot' ? item.badge : undefined\"\n [badgeColor]=\"item.badgeColor\"\n [iconBadge]=\"item.badgeStyle === 'dot' ? item.badge : undefined\"\n [checked]=\"item.selectionState\"\n (activeChange)=\"activeChange.emit($event)\"\n >\n {{ item.title | translate }}\n </a>\n }\n } @else {\n <div class=\"dropdown-divider\"></div>\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-header-dropdown.component';\nexport * from './si-header-dropdown-trigger.directive';\nexport * from './si-header-dropdown-item.component';\nexport * from './si-header-dropdown-items-factory.component';\nexport * from './si-header.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|