Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | 1x 22x 22x 22x 22x 22x 40x 5x 3x 2x | /**
* Copyright (c) Siemens 2016 - 2025
* SPDX-License-Identifier: MIT
*/
import { Directive, HostListener, inject, OnInit } from '@angular/core';
import { SiHeaderDropdownTriggerDirective } from '@siemens/element-ng/header-dropdown';
import { addIcons, elementDown2 } from '@siemens/element-ng/icon';
import { SiApplicationHeaderComponent } from './si-application-header.component';
import { SiHeaderCollapsibleActionsComponent } from './si-header-collapsible-actions.component';
@Directive({})
export abstract class SiHeaderActionItemBase implements OnInit {
/** @internal */
dropdownTrigger = inject(SiHeaderDropdownTriggerDirective, {
self: true,
optional: true
});
protected collapsibleActions = inject(SiHeaderCollapsibleActionsComponent, { optional: true });
protected readonly icons = addIcons({ elementDown2 });
private header = inject(SiApplicationHeaderComponent);
ngOnInit(): void {
if (this.dropdownTrigger) {
this.header.closeMobileMenus.subscribe(() => this.dropdownTrigger!.close());
}
}
@HostListener('click')
protected click(): void {
if (!this.dropdownTrigger?.isOpen && !this.collapsibleActions?.mobileExpanded()) {
// we must close other immediately as we would close the dropdown else wise immediately after opening.
this.header.closeMobileMenus.next();
} else Iif (!this.dropdownTrigger || !this.collapsibleActions?.mobileExpanded()) {
// we must use queueMicrotask, otherwise the dropdown gets re-opened immediately.
queueMicrotask(() => this.header.closeMobileMenus.next());
}
}
}
|