[Library | Trunk]: Fs modal redesign
git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-services-library/trunk/ng-openaire-library/src/app@60632 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
parent
1042733054
commit
b37a64809e
|
@ -1,35 +1,25 @@
|
||||||
import {Component, ElementRef, EventEmitter, Input, OnInit, Output} from "@angular/core";
|
import {Component, ElementRef, EventEmitter, OnInit, Output} from "@angular/core";
|
||||||
|
import {fromEvent, Subscription} from 'rxjs';
|
||||||
|
import {delay} from "rxjs/operators";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'fs-modal',
|
selector: 'fs-modal',
|
||||||
template: `
|
template: `
|
||||||
<div class="fs-modal">
|
<div class="fs-modal" (click)="close()">
|
||||||
|
<div id="fs-modal" (click)="$event.stopPropagation()" class="fs-modal-dialog">
|
||||||
<a class="close" (click)="close()">
|
<a class="close" (click)="close()">
|
||||||
<icon name="close" ratio="2"></icon>
|
<icon name="close"></icon>
|
||||||
</a>
|
</a>
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<div class="uk-position-relative uk-height-1-1">
|
<h6 *ngIf="title">{{title}}</h6>
|
||||||
<h5 *ngIf="title" class="uk-position-center">
|
|
||||||
{{title}}
|
|
||||||
</h5>
|
|
||||||
<div *ngIf="keys" class="uk-position-center-right uk-visible@m">
|
|
||||||
<button class="uk-button uk-button-secondary outlined" (click)="close()">{{cancelButtonText}}</button>
|
|
||||||
<button class="uk-button uk-button-secondary space" (click)="ok()">{{okButtonText}}</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="content" [class.hasFooter]="keys">
|
||||||
</div>
|
|
||||||
<div class="content">
|
|
||||||
<div class="content-header">
|
|
||||||
<div *ngIf="keys" class="uk-flex uk-flex-center uk-width-1-1 uk-margin-medium-bottom uk-hidden@m">
|
|
||||||
<button class="uk-button uk-button-secondary outlined" (click)="close()">{{cancelButtonText}}</button>
|
|
||||||
<button class="uk-button uk-button-secondary space" (click)="ok()">{{okButtonText}}</button>
|
|
||||||
</div>
|
|
||||||
<ng-content select="[header]">
|
|
||||||
</ng-content>
|
|
||||||
</div>
|
|
||||||
<div class="content-inner">
|
|
||||||
<ng-content></ng-content>
|
<ng-content></ng-content>
|
||||||
</div>
|
</div>
|
||||||
|
<div *ngIf="keys" class="footer uk-flex uk-flex-right">
|
||||||
|
<button class="uk-button uk-button-secondary outlined" (click)="close()">{{cancelButtonText}}</button>
|
||||||
|
<button class="uk-button uk-button-secondary space" (click)="ok()">{{okButtonText}}</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
`
|
`
|
||||||
|
@ -45,30 +35,39 @@ export class FullScreenModalComponent implements OnInit {
|
||||||
cancelEmitter: EventEmitter<boolean> = new EventEmitter<boolean>();
|
cancelEmitter: EventEmitter<boolean> = new EventEmitter<boolean>();
|
||||||
opened: boolean = false;
|
opened: boolean = false;
|
||||||
private readonly element: any;
|
private readonly element: any;
|
||||||
|
private subscriptions: any[] = [];
|
||||||
|
|
||||||
constructor(private el: ElementRef) {
|
constructor(private el: ElementRef) {
|
||||||
this.element = el.nativeElement;
|
this.element = el.nativeElement;
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
if(typeof document !== "undefined") {
|
if (typeof document !== "undefined") {
|
||||||
document.body.appendChild(this.element);
|
document.body.appendChild(this.element);
|
||||||
|
this.subscriptions.push(fromEvent(document, 'keydown').pipe(delay(1)).subscribe((event: KeyboardEvent) => {
|
||||||
|
this.close();
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnDestroy(): void {
|
ngOnDestroy(): void {
|
||||||
this.element.remove();
|
this.element.remove();
|
||||||
|
this.subscriptions.forEach(subscription => {
|
||||||
|
if (subscription instanceof Subscription) {
|
||||||
|
subscription.unsubscribe();
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
open() {
|
open() {
|
||||||
if(typeof document !== "undefined") {
|
if (typeof document !== "undefined") {
|
||||||
this.opened = true;
|
this.opened = true;
|
||||||
document.getElementsByTagName('html')[0].classList.add('fs-modal-open');
|
document.getElementsByTagName('html')[0].classList.add('fs-modal-open');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
close() {
|
close() {
|
||||||
if(typeof document !== "undefined") {
|
if (typeof document !== "undefined") {
|
||||||
this.opened = false;
|
this.opened = false;
|
||||||
document.getElementsByTagName('html')[0].classList.remove('fs-modal-open');
|
document.getElementsByTagName('html')[0].classList.remove('fs-modal-open');
|
||||||
this.cancelEmitter.emit();
|
this.cancelEmitter.emit();
|
||||||
|
|
Loading…
Reference in New Issue