import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core'; import { PopoverService } from '../../../components/popover/popover.service'; import { ToolbarUserDropdownComponent } from './toolbar-user-dropdown/toolbar-user-dropdown.component'; import { AuthService } from 'src/app/core/auth/services/auth.service'; import { Observable } from 'rxjs'; import { GlobalUser } from 'src/app/types/user.types'; @Component({ selector: 'vex-toolbar-user', templateUrl: './toolbar-user.component.html', changeDetection: ChangeDetectionStrategy.OnPush }) export class ToolbarUserComponent implements OnInit { dropdownOpen: boolean; globalUser$: Observable<GlobalUser>; constructor( private popover: PopoverService, private cd: ChangeDetectorRef, private authService: AuthService ) {} ngOnInit(): void { this.globalUser$ = this.authService.globalUser$; } showPopover(originRef: HTMLElement) { this.dropdownOpen = true; this.cd.markForCheck(); const popoverRef = this.popover.open({ content: ToolbarUserDropdownComponent, origin: originRef, offsetY: 12, position: [ { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom' }, { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' } ] }); popoverRef.afterClosed$.subscribe(() => { this.dropdownOpen = false; this.cd.markForCheck(); }); } }