You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.2 KiB
45 lines
1.2 KiB
import { Component, OnInit, HostListener, Inject } from '@angular/core'
|
|
import { Router, NavigationEnd } from '@angular/router'
|
|
import { DOCUMENT } from '@angular/common'
|
|
|
|
@Component({
|
|
selector: 'app-header',
|
|
templateUrl: './header.component.html',
|
|
styleUrls: ['./header.component.scss']
|
|
})
|
|
export class HeaderComponent implements OnInit {
|
|
|
|
public isSticky: boolean = false
|
|
public isMenuOpen: boolean = false
|
|
|
|
constructor(@Inject(DOCUMENT) private document: Document, private router: Router) {
|
|
router.events.subscribe((val) => {
|
|
this.isMenuOpen = false
|
|
this.isSticky = true
|
|
this.document.body.classList.remove('no-scroll')
|
|
})
|
|
}
|
|
|
|
ngOnInit(): void {
|
|
}
|
|
|
|
@HostListener('window:scroll', ['$event'])
|
|
onScroll(event) {
|
|
const verticalOffset = window.pageYOffset
|
|
|| document.documentElement.scrollTop
|
|
|| document.body.scrollTop || 0
|
|
|
|
this.isSticky = this.isMenuOpen || verticalOffset > 10
|
|
}
|
|
|
|
toggleMenu(): void {
|
|
this.isMenuOpen = !this.isMenuOpen
|
|
if(this.isMenuOpen) {
|
|
this.isSticky = true
|
|
this.document.body.classList.add('no-scroll')
|
|
} else {
|
|
this.document.body.classList.remove('no-scroll')
|
|
}
|
|
}
|
|
|
|
}
|