ngx-slice-kit
Version:
[](https://badge.fury.io/js/ngx-slice-kit)
85 lines • 12.5 kB
JavaScript
import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
import { AlertOptions } from './alert.model';
import { fromEvent, of } from 'rxjs';
import { DOCUMENT, isPlatformServer } from '@angular/common';
import { AlertsComponent } from './alerts.component';
import * as i0 from "@angular/core";
import * as i1 from "../../core/layout-control/layout-control.service";
export const DEFAULT_ALERT_LIMIT = 25;
export class AlertService {
constructor(document, platformId, injector, appRef, cfResolver, layoutControl) {
this.document = document;
this.platformId = platformId;
this.injector = injector;
this.appRef = appRef;
this.cfResolver = cfResolver;
this.layoutControl = layoutControl;
this.alertRefs = new Map();
this.alertIndex = 0;
}
success(options) {
this.showAlert({ ...options, type: 'success' });
}
error(options) {
this.showAlert({ ...options, type: 'error' });
}
action(options) {
return of(this.showAlert({ ...options, action: true }));
}
checkoutLayout() {
this.mobileLayout = this.document.body.clientWidth < this.layoutControl.mobileLayoutWidth;
if (this.layoutSub?.closed) {
this.layoutSub = fromEvent(window, 'resize').subscribe(res => {
this.mobileLayout = this.document.body.clientWidth < this.layoutControl.mobileLayoutWidth;
});
}
}
showAlert(options) {
if (isPlatformServer(this.platformId)) {
return;
}
this.checkoutLayout();
if (this.mobileLayout) {
options.positionX = 'center';
}
this.alertIndex++;
options.index = this.alertIndex;
options = new AlertOptions(options);
const alertContainerRef = this.alertRefs.get(options.refName);
if (!!alertContainerRef) {
alertContainerRef.instance.options = options;
}
else {
const container = this.document.createElement('sdk-alert-container');
const factory = this.cfResolver.resolveComponentFactory(AlertsComponent);
const containerRef = factory.create(this.injector, [], container);
containerRef.instance.options = options;
this.appRef.attachView((containerRef).hostView);
this.document.body.appendChild(container);
this.alertRefs.set(options.refName, containerRef);
containerRef.instance.closed.subscribe(() => {
this.alertRefs.delete(options.refName);
this.appRef.detachView(containerRef.hostView);
this.document.body.removeChild(container);
if (this.alertRefs.size < 1) {
this.layoutSub?.unsubscribe();
}
});
}
}
}
AlertService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: AlertService, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Injector }, { token: i0.ApplicationRef }, { token: i0.ComponentFactoryResolver }, { token: i1.LayoutControlService }], target: i0.ɵɵFactoryTarget.Injectable });
AlertService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: AlertService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: AlertService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
type: Inject,
args: [DOCUMENT]
}] }, { type: undefined, decorators: [{
type: Inject,
args: [PLATFORM_ID]
}] }, { type: i0.Injector }, { type: i0.ApplicationRef }, { type: i0.ComponentFactoryResolver }, { type: i1.LayoutControlService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmd4LXNsaWNlLWtpdC9zcmMvbGliL21vZGFscy9hbGVydC9hbGVydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMEQsTUFBTSxFQUFFLFVBQVUsRUFBWSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBR3JELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztBQUt0QyxNQUFNLE9BQU8sWUFBWTtJQVFyQixZQUM4QixRQUFhLEVBQ1YsVUFBZSxFQUNwQyxRQUFrQixFQUNsQixNQUFzQixFQUN0QixVQUFvQyxFQUNwQyxhQUFtQztRQUxqQixhQUFRLEdBQVIsUUFBUSxDQUFLO1FBQ1YsZUFBVSxHQUFWLFVBQVUsQ0FBSztRQUNwQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQTBCO1FBQ3BDLGtCQUFhLEdBQWIsYUFBYSxDQUFzQjtRQVp4QyxjQUFTLEdBQUcsSUFBSSxHQUFHLEVBQXlDLENBQUM7UUFJN0QsZUFBVSxHQUFHLENBQUMsQ0FBQztJQVV0QixDQUFDO0lBRU0sT0FBTyxDQUFDLE9BQXNCO1FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFD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QkFFMUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUM7aUJBQ2pDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7O3lHQTdFUSxZQUFZLGtCQVNULFFBQVEsYUFDUixXQUFXOzZHQVZkLFlBQVksY0FGVCxNQUFNOzJGQUVULFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFVUSxNQUFNOzJCQUFDLFFBQVE7OzBCQUNmLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIENvbXBvbmVudFJlZiwgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFsZXJ0T3B0aW9ucyB9IGZyb20gJy4vYWxlcnQubW9kZWwnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybVNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBbGVydHNDb21wb25lbnQgfSBmcm9tICcuL2FsZXJ0cy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGF5b3V0Q29udHJvbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2xheW91dC1jb250cm9sL2xheW91dC1jb250cm9sLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9BTEVSVF9MSU1JVCA9IDI1O1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0U2VydmljZSB7XG5cbiAgICBwdWJsaWMgYWxlcnRSZWZzID0gbmV3IE1hcDxzdHJpbmcsIENvbXBvbmVudFJlZjxBbGVydHNDb21wb25lbnQ+PigpO1xuICAgIHB1YmxpYyBsYXlvdXRTdWI6IFN1YnNjcmlwdGlvbjtcblxuICAgIHB1YmxpYyBtb2JpbGVMYXlvdXQ6IGJvb2xlYW47XG4gICAgcHVibGljIGFsZXJ0SW5kZXggPSAwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IGFueSxcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnksXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgICAgIHByaXZhdGUgY2ZSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICBwcml2YXRlIGxheW91dENvbnRyb2w6IExheW91dENvbnRyb2xTZXJ2aWNlXG4gICAgKSB7XG4gICAgfVxuXG4gICAgcHVibGljIHN1Y2Nlc3Mob3B0aW9ucz86IEFsZXJ0T3B0aW9ucyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNob3dBbGVydCh7Li4ub3B0aW9ucywgdHlwZTogJ3N1Y2Nlc3MnfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGVycm9yKG9wdGlvbnM/OiBBbGVydE9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93QWxlcnQoey4uLm9wdGlvbnMsIHR5cGU6ICdlcnJvcid9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWN0aW9uKG9wdGlvbnM/OiBBbGVydE9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gb2YodGhpcy5zaG93QWxlcnQoey4uLm9wdGlvbnMsIGFjdGlvbjogdHJ1ZX0pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrb3V0TGF5b3V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vYmlsZUxheW91dCA9IHRoaXMuZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCA8IHRoaXMubGF5b3V0Q29udHJvbC5tb2JpbGVMYXlvdXRXaWR0aDtcbiAgICAgICAgaWYgKHRoaXMubGF5b3V0U3ViPy5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0U3ViID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubW9iaWxlTGF5b3V0ID0gdGhpcy5kb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIDwgdGhpcy5sYXlvdXRDb250cm9sLm1vYmlsZUxheW91dFdpZHRoO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvd0FsZXJ0KG9wdGlvbnM/OiBBbGVydE9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1TZXJ2ZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGVja291dExheW91dCgpO1xuXG4gICAgICAgIGlmICh0aGlzLm1vYmlsZUxheW91dCkge1xuICAgICAgICAgICAgb3B0aW9ucy5wb3NpdGlvblggPSAnY2VudGVyJztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWxlcnRJbmRleCsrO1xuICAgICAgICBvcHRpb25zLmluZGV4ID0gdGhpcy5hbGVydEluZGV4O1xuICAgICAgICBvcHRpb25zID0gbmV3IEFsZXJ0T3B0aW9ucyhvcHRpb25zKTtcblxuICAgICAgICBjb25zdCBhbGVydENvbnRhaW5lclJlZiA9IHRoaXMuYWxlcnRSZWZzLmdldChvcHRpb25zLnJlZk5hbWUpO1xuICAgICAgICBpZiAoISFhbGVydENvbnRhaW5lclJlZikge1xuICAgICAgICAgICAgYWxlcnRDb250YWluZXJSZWYuaW5zdGFuY2Uub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Nkay1hbGVydC1jb250YWluZXInKTtcbiAgICAgICAgICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLmNmUmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoQWxlcnRzQ29tcG9uZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IGZhY3RvcnkuY3JlYXRlKHRoaXMuaW5qZWN0b3IsIFtdLCBjb250YWluZXIpO1xuICAgICAgICAgICAgY29udGFpbmVyUmVmLmluc3RhbmNlLm9wdGlvbnMgPSBvcHRpb25zO1xuXG5cbiAgICAgICAgICAgIHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcoKGNvbnRhaW5lclJlZikuaG9zdFZpZXcpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7XG4gICAgICAgICAgICB0aGlzLmFsZXJ0UmVmcy5zZXQob3B0aW9ucy5yZWZOYW1lLCBjb250YWluZXJSZWYpO1xuICAgICAgICAgICAgY29udGFpbmVyUmVmLmluc3RhbmNlLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRSZWZzLmRlbGV0ZShvcHRpb25zLnJlZk5hbWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwUmVmLmRldGFjaFZpZXcoY29udGFpbmVyUmVmLmhvc3RWaWV3KTtcbiAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoY29udGFpbmVyKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFsZXJ0UmVmcy5zaXplIDwgMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxheW91dFN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==