import {Component, ElementRef, EventEmitter, HostListener, OnDestroy, OnInit, Output, ViewChild} from "@angular/core"; import {Subscription} from "rxjs"; declare var UIkit; @Component({ selector: '[page-content]', template: `
`, }) export class PageContentComponent implements OnInit, OnDestroy { public offset: number; public sticky: boolean = false; @Output() public stickyEmitter: EventEmitter = new EventEmitter(); @ViewChild("header") public header: ElementRef; private current; private subscriptions: any[] = []; constructor() { } ngOnInit() { if (typeof window !== "undefined") { this.current = window.pageYOffset; this.initSticky(); } } initSticky() { this.clear(); this.subscriptions.push(UIkit.util.on(document, 'active', '#sticky-menu', (): void => { this.offset = Number.parseInt(getComputedStyle(document.documentElement).getPropertyValue('--structure-header-height')); })); this.subscriptions.push(UIkit.util.on(document, 'inactive', '#sticky-menu', (): void => { this.offset = 0; })); this.subscriptions.push(UIkit.util.on(document, 'active', '#page_content_header', (): void => { this.sticky = true; this.stickyEmitter.emit(this.sticky); })); this.subscriptions.push(UIkit.util.on(document, 'inactive', '#page_content_header', (): void => { this.sticky = false; this.stickyEmitter.emit(this.sticky); })); } clear() { this.subscriptions.forEach(subscription => { if (subscription instanceof Subscription) { subscription.unsubscribe(); } else if (subscription instanceof Function) { subscription(); } }); } ngOnDestroy() { this.clear(); } }