src/app/component/notification/notification.ref.ts
Properties |
|
Methods |
constructor(containerInstance: NotificationContainer, _overlayRef: OverlayRef)
|
|||||||||
|
Parameters :
|
| Private Readonly _afterDismissed |
Default value : new Subject<NotificationDismiss>()
|
| Private Readonly _afterOpened |
Default value : new Subject<void>()
|
| Private _dismissedByAction |
Default value : false
|
| Private _durationTimeoutId |
Type : any
|
| Private Readonly _onAction |
Default value : new Subject<void>()
|
| containerInstance |
Type : NotificationContainer
|
| instance |
Type : T
|
| _dismissAfter | ||||||
_dismissAfter(duration: number)
|
||||||
|
Parameters :
Returns :
void
|
| Private _finishDismiss |
_finishDismiss()
|
|
Returns :
void
|
| _open |
_open()
|
|
Returns :
void
|
| afterDismissed |
afterDismissed()
|
|
Returns :
Observable<NotificationDismiss>
|
| afterOpened |
afterOpened()
|
|
Returns :
Observable<void>
|
| closeWithAction |
closeWithAction()
|
|
Returns :
void
|
| dismiss |
dismiss()
|
|
Returns :
void
|
| dismissWithAction |
dismissWithAction()
|
|
Returns :
void
|
| onAction |
onAction()
|
|
Returns :
Observable<void>
|
import { OverlayRef } from '@angular/cdk/overlay';
import { Observable, Subject } from 'rxjs';
import { NotificationContainer } from './notification-container';
export interface NotificationDismiss {
dismissedByAction: boolean;
}
export class NotificationRef<T> {
instance: T;
containerInstance: NotificationContainer;
private readonly _afterDismissed = new Subject<NotificationDismiss>();
private readonly _afterOpened = new Subject<void>();
private readonly _onAction = new Subject<void>();
private _durationTimeoutId: any;
private _dismissedByAction = false;
constructor(
containerInstance: NotificationContainer,
private _overlayRef: OverlayRef
) {
this.containerInstance = containerInstance;
this.onAction().subscribe(() => this.dismiss());
containerInstance._onExit.subscribe(() => this._finishDismiss());
}
dismiss(): void {
if (!this._afterDismissed.closed) {
this.containerInstance.exit();
}
clearTimeout(this._durationTimeoutId);
}
dismissWithAction(): void {
if (!this._onAction.closed) {
this._dismissedByAction = true;
this._onAction.next();
this._onAction.complete();
}
}
closeWithAction(): void {
this.dismissWithAction();
}
_dismissAfter(duration: number): void {
this._durationTimeoutId = setTimeout(() => this.dismiss(), duration);
}
_open(): void {
if (!this._afterOpened.closed) {
this._afterOpened.next();
this._afterOpened.complete();
}
}
private _finishDismiss(): void {
this._overlayRef.dispose();
if (!this._onAction.closed) {
this._onAction.complete();
}
this._afterDismissed.next({ dismissedByAction: this._dismissedByAction });
this._afterDismissed.complete();
this._dismissedByAction = false;
}
afterDismissed(): Observable<NotificationDismiss> {
return this._afterDismissed.asObservable();
}
afterOpened(): Observable<void> {
return this.containerInstance._onEnter;
}
onAction(): Observable<void> {
return this._onAction.asObservable();
}
}