systelab-components
Version:
systelab-components is a set of components that use wide accepted and adopted standard technologies like Angular and Bootstrap, as well as other popular libraries. Please read the ATTRIBUTION.md file for a complete list of dependencies.
84 lines • 10.8 kB
JavaScript
import { Inject, Injectable, Injector, Optional } from '@angular/core';
import { ComponentPortal } from '@angular/cdk/portal';
import { ToastRef } from './toast-ref';
import { DEFAULT_TOAST_CONFIG, ToastData } from './toast-config';
import { ToastComponent } from './toast.component';
import { APP_CONFIG } from '../systelab-components.module.config';
import * as i0 from "@angular/core";
import * as i1 from "@angular/cdk/overlay";
export class ToastService {
constructor(config, overlay, parentInjector) {
this.config = config;
this.overlay = overlay;
this.parentInjector = parentInjector;
this._config = config?.toast ?? DEFAULT_TOAST_CONFIG;
}
setConfig(config) {
this._config = config;
}
getConfig() {
return this._config;
}
showError(text) {
this.show({ text, type: 'error' });
}
showWarning(text) {
this.show({ text, type: 'warning' });
}
showInformation(text) {
this.show({ text, type: 'info' });
}
showSuccess(text) {
this.show({ text, type: 'success' });
}
show(data) {
const positionStrategy = this.getPositionStrategy();
const overlayRef = this.overlay.create({ positionStrategy, panelClass: 'slab-toast-panel' });
const toastRef = new ToastRef(overlayRef);
this._lastToast = toastRef;
const injector = this.getInjector(data, toastRef, this.parentInjector);
const toastPortal = new ComponentPortal(ToastComponent, null, injector);
overlayRef.attach(toastPortal);
return toastRef;
}
getPositionStrategy() {
if (!this._lastToast || (this._lastToast && !this._lastToast.isVisible())) {
return this.overlay.position().global().bottom(this.getPosition()).centerHorizontally();
}
else {
return this.overlay.position().global().top(this.getPosition()).centerHorizontally();
}
}
getPosition() {
const lastToastIsVisible = this._lastToast && this._lastToast.isVisible();
let position = 25;
if (lastToastIsVisible) {
const { height, top } = this._lastToast.getPosition();
position = top - height - 25;
}
return position + 'px';
}
getInjector(data, toastRef, parentInjector) {
return Injector.create({
parent: parentInjector,
providers: [
{ provide: ToastData, useValue: data },
{ provide: ToastRef, useValue: toastRef },
]
});
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ToastService, deps: [{ token: APP_CONFIG, optional: true }, { token: i1.Overlay }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ToastService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ToastService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], ctorParameters: () => [{ type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: [APP_CONFIG]
}] }, { type: i1.Overlay }, { type: i0.Injector }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N5c3RlbGFiLWNvbXBvbmVudHMvc3JjL2xpYi90b2FzdC90b2FzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFFLG9CQUFvQixFQUFlLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7OztBQUtsRSxNQUFNLE9BQU8sWUFBWTtJQUl2QixZQUFvRCxNQUFNLEVBQVUsT0FBZ0IsRUFBVSxjQUF3QjtRQUFsRSxXQUFNLEdBQU4sTUFBTSxDQUFBO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFVO1FBQ3BILElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxFQUFFLEtBQUssSUFBSSxvQkFBb0IsQ0FBQztJQUN2RCxDQUFDO0lBRU0sU0FBUyxDQUFDLE1BQW1CO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFTSxTQUFTLENBQUMsSUFBWTtRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxXQUFX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VUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFLYyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgVG9hc3RSZWYgfSBmcm9tICcuL3RvYXN0LXJlZic7XG5pbXBvcnQgeyBERUZBVUxUX1RPQVNUX0NPTkZJRywgVG9hc3RDb25maWcsIFRvYXN0RGF0YSB9IGZyb20gJy4vdG9hc3QtY29uZmlnJztcbmltcG9ydCB7IFRvYXN0Q29tcG9uZW50IH0gZnJvbSAnLi90b2FzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVBQX0NPTkZJRyB9IGZyb20gJy4uL3N5c3RlbGFiLWNvbXBvbmVudHMubW9kdWxlLmNvbmZpZyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUb2FzdFNlcnZpY2Uge1xuICBwcml2YXRlIF9sYXN0VG9hc3Q6IFRvYXN0UmVmO1xuICBwcml2YXRlIF9jb25maWc6IFRvYXN0Q29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoQVBQX0NPTkZJRykgcHJpdmF0ZSBjb25maWcsIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSwgcHJpdmF0ZSBwYXJlbnRJbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICB0aGlzLl9jb25maWcgPSBjb25maWc/LnRvYXN0ID8/IERFRkFVTFRfVE9BU1RfQ09ORklHO1xuICB9XG5cbiAgcHVibGljIHNldENvbmZpZyhjb25maWc6IFRvYXN0Q29uZmlnKTogdm9pZCB7XG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICB9XG5cbiAgcHVibGljIGdldENvbmZpZygpOiBUb2FzdENvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZztcbiAgfVxuXG4gIHB1YmxpYyBzaG93RXJyb3IodGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5zaG93KHt0ZXh0LCB0eXBlOiAnZXJyb3InIH0pO1xuICB9XG5cbiAgcHVibGljIHNob3dXYXJuaW5nKHRleHQ6IHN0cmluZykge1xuICAgIHRoaXMuc2hvdyh7dGV4dCwgdHlwZTogJ3dhcm5pbmcnIH0pO1xuICB9XG5cbiAgcHVibGljIHNob3dJbmZvcm1hdGlvbih0ZXh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNob3coe3RleHQsIHR5cGU6ICdpbmZvJyB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93U3VjY2Vzcyh0ZXh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNob3coe3RleHQsIHR5cGU6ICdzdWNjZXNzJyB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdyhkYXRhOiBUb2FzdERhdGEpIHtcbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5nZXRQb3NpdGlvblN0cmF0ZWd5KCk7XG4gICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoeyBwb3NpdGlvblN0cmF0ZWd5LCBwYW5lbENsYXNzOiAnc2xhYi10b2FzdC1wYW5lbCcgfSk7XG5cbiAgICBjb25zdCB0b2FzdFJlZiA9IG5ldyBUb2FzdFJlZihvdmVybGF5UmVmKTtcbiAgICB0aGlzLl9sYXN0VG9hc3QgPSB0b2FzdFJlZjtcblxuICAgIGNvbnN0IGluamVjdG9yID0gdGhpcy5nZXRJbmplY3RvcihkYXRhLCB0b2FzdFJlZiwgdGhpcy5wYXJlbnRJbmplY3Rvcik7XG4gICAgY29uc3QgdG9hc3RQb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKFRvYXN0Q29tcG9uZW50LCBudWxsLCBpbmplY3Rvcik7XG5cbiAgICBvdmVybGF5UmVmLmF0dGFjaCh0b2FzdFBvcnRhbCk7XG5cbiAgICByZXR1cm4gdG9hc3RSZWY7XG4gIH1cblxuICBwcml2YXRlIGdldFBvc2l0aW9uU3RyYXRlZ3koKSB7XG4gICAgaWYgKCF0aGlzLl9sYXN0VG9hc3QgfHwgKHRoaXMuX2xhc3RUb2FzdCAmJiAhdGhpcy5fbGFzdFRvYXN0LmlzVmlzaWJsZSgpKSkge1xuICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLmJvdHRvbSh0aGlzLmdldFBvc2l0aW9uKCkpLmNlbnRlckhvcml6b250YWxseSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkudG9wKHRoaXMuZ2V0UG9zaXRpb24oKSkuY2VudGVySG9yaXpvbnRhbGx5KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQb3NpdGlvbigpIHtcbiAgICBjb25zdCBsYXN0VG9hc3RJc1Zpc2libGUgPSB0aGlzLl9sYXN0VG9hc3QgJiYgdGhpcy5fbGFzdFRvYXN0LmlzVmlzaWJsZSgpO1xuICAgIGxldCBwb3NpdGlvbiA9IDI1O1xuICAgIGlmIChsYXN0VG9hc3RJc1Zpc2libGUpIHtcbiAgICAgIGNvbnN0IHsgaGVpZ2h0LCB0b3AgfSA9IHRoaXMuX2xhc3RUb2FzdC5nZXRQb3NpdGlvbigpO1xuICAgICAgcG9zaXRpb24gPSB0b3AgLSBoZWlnaHQgLSAyNTtcbiAgICB9XG5cbiAgICByZXR1cm4gcG9zaXRpb24gKyAncHgnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbmplY3RvcihkYXRhOiBUb2FzdERhdGEsIHRvYXN0UmVmOiBUb2FzdFJlZiwgcGFyZW50SW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwYXJlbnQ6IHBhcmVudEluamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogVG9hc3REYXRhLCB1c2VWYWx1ZTogZGF0YSB9LFxuICAgICAgICB7IHByb3ZpZGU6IFRvYXN0UmVmLCB1c2VWYWx1ZTogdG9hc3RSZWYgfSxcbiAgICAgIF1cbiAgICB9KTtcbiAgfVxufVxuIl19