diff --git a/package.json b/package.json index 3f44cd5..fb63651 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "rxjs": "^6.5.1", "ts-md5": "^1.2.0", "tslib": "^2.0.0", - "uikit": "3.12.2", + "uikit": "3.13.10", "zone.js": "~0.11.4" }, "devDependencies": { diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 258f369..0f677b6 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -60,7 +60,8 @@ import {ResourcesService} from "./openaireLibrary/monitor/services/resources.ser - @@ -79,7 +80,8 @@ export class AppComponent { header: Header; logoPath: string = 'assets/common-assets/logo-services/monitor/'; /* Contact */ - public showQuickContact: boolean; + public bottomNotIntersecting: boolean; + public displayQuickContact: boolean; // intersecting with specific section in home page public showGetStarted: boolean = true; public contactForm: UntypedFormGroup; public organizationTypes: string[] = [ @@ -107,7 +109,7 @@ export class AppComponent { if (event instanceof NavigationEnd) { if (event.url === '/contact-us') { this.quickContactService.setDisplay(false); - } else if (event.url !== '/contact-us' && !this.showQuickContact) { + } else if (event.url !== '/contact-us' && (!this.bottomNotIntersecting || !this.displayQuickContact)) { this.quickContactService.setDisplay(true); } this.showGetStarted = event.url !== '/get-started'; @@ -135,7 +137,7 @@ export class AppComponent { this.reset(); })); this.subscriptions.push(this.quickContactService.isDisplayed.subscribe(display => { - this.showQuickContact = display; + this.displayQuickContact = display; })); } @@ -145,25 +147,23 @@ export class AppComponent { rootMargin: '0px', threshold: 0.1 }; - let intersectionObserver = new IntersectionObserver(entries => { - entries.forEach(entry => { - if (entry.isIntersecting && this.showQuickContact) { - this.showQuickContact = false; - this.quickContactService.setDisplay(this.showQuickContact); - } else if (!entry.isIntersecting && !this.showQuickContact) { - this.showQuickContact = true; - this.quickContactService.setDisplay(this.showQuickContact); - } + + let intersectionObserver = new IntersectionObserver(entries => { + entries.forEach(entry => { + // if (entry.isIntersecting && this.showQuickContact) { + this.bottomNotIntersecting = !entry.isIntersecting; }); - }, options); - intersectionObserver.observe(this.bottom.nativeElement); - this.subscriptions.push(intersectionObserver); + }, options); + intersectionObserver.observe(this.bottom.nativeElement); + this.subscriptions.push(intersectionObserver); } public ngOnDestroy() { this.subscriptions.forEach(value => { if (value instanceof Subscriber) { value.unsubscribe(); + } else if (typeof IntersectionObserver !== "undefined" && value instanceof IntersectionObserver) { + value.disconnect(); } }); this.userManagementService.clearSubscriptions();