75 lines
7.8 KiB
JavaScript
75 lines
7.8 KiB
JavaScript
|
import { Subject } from 'rxjs';
|
||
|
/**
|
||
|
* Reference to a toast opened via the Toastr service.
|
||
|
*/
|
||
|
export class ToastRef {
|
||
|
_overlayRef;
|
||
|
/** The instance of component opened into the toast. */
|
||
|
componentInstance;
|
||
|
/** Count of duplicates of this toast */
|
||
|
duplicatesCount = 0;
|
||
|
/** Subject for notifying the user that the toast has finished closing. */
|
||
|
_afterClosed = new Subject();
|
||
|
/** triggered when toast is activated */
|
||
|
_activate = new Subject();
|
||
|
/** notifies the toast that it should close before the timeout */
|
||
|
_manualClose = new Subject();
|
||
|
/** notifies the toast that it should reset the timeouts */
|
||
|
_resetTimeout = new Subject();
|
||
|
/** notifies the toast that it should count a duplicate toast */
|
||
|
_countDuplicate = new Subject();
|
||
|
constructor(_overlayRef) {
|
||
|
this._overlayRef = _overlayRef;
|
||
|
}
|
||
|
manualClose() {
|
||
|
this._manualClose.next();
|
||
|
this._manualClose.complete();
|
||
|
}
|
||
|
manualClosed() {
|
||
|
return this._manualClose.asObservable();
|
||
|
}
|
||
|
timeoutReset() {
|
||
|
return this._resetTimeout.asObservable();
|
||
|
}
|
||
|
countDuplicate() {
|
||
|
return this._countDuplicate.asObservable();
|
||
|
}
|
||
|
/**
|
||
|
* Close the toast.
|
||
|
*/
|
||
|
close() {
|
||
|
this._overlayRef.detach();
|
||
|
this._afterClosed.next();
|
||
|
this._manualClose.next();
|
||
|
this._afterClosed.complete();
|
||
|
this._manualClose.complete();
|
||
|
this._activate.complete();
|
||
|
this._resetTimeout.complete();
|
||
|
this._countDuplicate.complete();
|
||
|
}
|
||
|
/** Gets an observable that is notified when the toast is finished closing. */
|
||
|
afterClosed() {
|
||
|
return this._afterClosed.asObservable();
|
||
|
}
|
||
|
isInactive() {
|
||
|
return this._activate.isStopped;
|
||
|
}
|
||
|
activate() {
|
||
|
this._activate.next();
|
||
|
this._activate.complete();
|
||
|
}
|
||
|
/** Gets an observable that is notified when the toast has started opening. */
|
||
|
afterActivate() {
|
||
|
return this._activate.asObservable();
|
||
|
}
|
||
|
/** Reset the toast timouts and count duplicates */
|
||
|
onDuplicate(resetTimeout, countDuplicate) {
|
||
|
if (resetTimeout) {
|
||
|
this._resetTimeout.next();
|
||
|
}
|
||
|
if (countDuplicate) {
|
||
|
this._countDuplicate.next(++this.duplicatesCount);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QtcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b2FzdHIvdG9hc3QtcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHM0M7O0dBRUc7QUFDSCxNQUFNLE9BQU8sUUFBUTtJQWtCQztJQWpCcEIsdURBQXVEO0lBQ3ZELGlCQUFpQixDQUFLO0lBRXRCLHdDQUF3QztJQUNoQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO0lBRTVCLDBFQUEwRTtJQUNsRSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUMzQyx3Q0FBd0M7SUFDaEMsU0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFDeEMsaUVBQWlFO0lBQ3pELFlBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQzNDLDJEQUEyRDtJQUNuRCxhQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUM1QyxnRUFBZ0U7SUFDeEQsZUFBZSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7SUFFaEQsWUFBb0IsV0FBdUI7UUFBdkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7SUFBRyxDQUFDO0lBRS9DLFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsOEVBQThFO0lBQzlFLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCw4RUFBOEU7SUFDOUUsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsbURBQW1EO0lBQ25ELFdBQVcsQ0FBQyxZQUFxQixFQUFFLGNBQXVCO1FBQ3hELElBQUksWUFBWSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDM0I7UUFDRCxJQUFJLGNBQWMsRUFBRTtZQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUNuRDtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE92ZXJsYXlSZWYgfSBmcm9tICcuLi9vdmVybGF5L292ZXJsYXktcmVmJztcblxuLyoqXG4gKiBSZWZlcmVuY2UgdG8gYSB0b2FzdCBvcGVuZWQgdmlhIHRoZSBUb2FzdHIgc2VydmljZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFRvYXN0UmVmPFQ+IHtcbiAgLyoqIFRoZSBpbnN0YW5jZSBvZiBjb21wb25lbnQgb3BlbmVkIGludG8gdGhlIHRvYXN0LiAqL1xuICBjb21wb25lbnRJbnN0YW5jZSE6IFQ7XG5cbiAgLyoqIENvdW50IG9mIGR1cGxpY2F0ZXMgb2YgdGhpcyB0b2FzdCAqL1xuICBwcml2YXRlIGR1cGxpY2F0ZXNDb3VudCA9IDA7XG5cbiAgLyoqIFN1YmplY3QgZm9yIG5vdGlmeWluZyB0aGUgdXNlciB0aGF0IHRoZSB0b2FzdCBoYXMgZmluaXNoZWQgY2xvc2luZy4gKi9cbiAgcHJpdmF0ZSBfYWZ0ZXJDbG9zZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAvKiogdHJpZ2dlcmVkIHdoZW4gdG9hc3QgaXMgYWN0aXZhdGVkICovXG4gIHByaXZhdGUgX2FjdGl2YXRlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgLyoqIG5vdGlmaWVzIHRoZSB0b2FzdCB0aGF0IGl0IHNob3VsZCBjbG9zZSBiZWZvcmUgdGhlIHRpbWVvdXQgKi9cbiAgcHJpdmF0ZSBfbWFudWFsQ2xvc2UgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAvKiogbm90aWZpZXMgdGhlIHRvYXN0IHRoYXQgaXQgc2hvdWxkIHJlc2V0IHRoZSB0aW1lb3V0cyAqL1xuICBwcml2YXRlIF9yZXNldFRpbWVvdXQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAvKiogbm90aWZpZXMgdGhlIHRvYXN0IHRoYXQgaXQgc2hvdWxkIGNvdW50IGEgZHVwbGljYXRlIHRvYXN0ICovXG4gIHByaXZhdGUgX2NvdW50RHVwbGljYXRlID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWYpIHt9XG5cbiAgbWFudWFsQ2xvc2UoKSB7XG4gICAgdGhpcy5fbWFudWFsQ2xvc2UubmV4dCgpO1xuICAgIHRoaXMuX21hbnVhbENsb3NlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBtYW51YWxDbG9zZWQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fbWFudWFsQ2xvc2UuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICB0aW1lb3V0UmVzZXQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVzZXRUaW1lb3V0LmFzT2JzZXJ2YWJsZSgpO
|