import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from "@angular/core"; import {fromEvent, Subscription} from 'rxjs'; import {delay} from "rxjs/operators"; declare var UIkit; @Component({ selector: 'fs-modal', template: `
` }) export class FullScreenModalComponent implements OnInit { okButtonText = 'OK'; cancelButtonText = 'Cancel'; cancelButton: boolean = false; okButton: boolean = false; title: string = null; @Input() okButtonDisabled = false; @Input() cancelButtonDisabled = false; @Output() okEmitter: EventEmitter = new EventEmitter(); @Output() cancelEmitter: EventEmitter = new EventEmitter(); opened: boolean = false; @ViewChild('modal_full') element: ElementRef; private subscriptions: any[] = []; private clickedInside: boolean; constructor(private el: ElementRef) { this.element = el.nativeElement; } ngOnInit() { if (typeof document !== "undefined") { this.subscriptions.push(fromEvent(document, 'keydown').pipe(delay(1)).subscribe((event: KeyboardEvent) => { if(event.keyCode === 27) { this.close(); } })); } } ngOnDestroy(): void { this.subscriptions.forEach(subscription => { if (subscription instanceof Subscription) { subscription.unsubscribe(); } }) } open() { UIkit.modal(this.element.nativeElement).show(); } close() { UIkit.modal(this.element.nativeElement).hide(); this.cancelEmitter.emit(); } ok() { this.close(); this.okEmitter.emit(true); } }