UNPKG

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
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