@libs-ui/services-notification 0.1.1-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/components/base.component.d.ts +15 -0
- package/components/index.d.ts +1 -0
- package/components/text/text.component.d.ts +13 -0
- package/esm2022/components/base.component.mjs +23 -0
- package/esm2022/components/index.mjs +2 -0
- package/esm2022/components/text/text.component.mjs +60 -0
- package/esm2022/index.mjs +2 -0
- package/esm2022/interfaces/notification.mjs +2 -0
- package/esm2022/libs-ui-services-notification.mjs +5 -0
- package/esm2022/notification.service.mjs +190 -0
- package/fesm2022/libs-ui-services-notification.mjs +271 -0
- package/fesm2022/libs-ui-services-notification.mjs.map +1 -0
- package/index.d.ts +1 -0
- package/interfaces/notification.d.ts +29 -0
- package/notification.service.d.ts +31 -0
- package/package.json +28 -0
package/README.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { OnDestroy } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { INotificationTextConfig } from '../interfaces/notification';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class LibUiServiceNotificationBaseComponent implements OnDestroy {
|
|
6
|
+
protected onDestroy: Subject<void>;
|
|
7
|
+
readonly message: import("@angular/core").InputSignal<string>;
|
|
8
|
+
readonly interpolateParams: import("@angular/core").InputSignal<Record<string, unknown> | undefined>;
|
|
9
|
+
readonly title: import("@angular/core").InputSignal<string>;
|
|
10
|
+
readonly config: import("@angular/core").InputSignal<INotificationTextConfig>;
|
|
11
|
+
readonly removeComponent: import("@angular/core").InputSignal<(component: unknown) => Promise<void>>;
|
|
12
|
+
ngOnDestroy(): void;
|
|
13
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LibUiServiceNotificationBaseComponent, never>;
|
|
14
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<LibUiServiceNotificationBaseComponent, never, never, { "message": { "alias": "message"; "required": false; "isSignal": true; }; "interpolateParams": { "alias": "interpolateParams"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": false; "isSignal": true; }; "removeComponent": { "alias": "removeComponent"; "required": true; "isSignal": true; }; }, {}, never, never, false, never>;
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './text/text.component';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { OnDestroy, OnInit } from '@angular/core';
|
|
2
|
+
import { LibUiServiceNotificationBaseComponent } from '../base.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class LibUiServicesComponentsTextComponent extends LibUiServiceNotificationBaseComponent implements OnInit, OnDestroy {
|
|
5
|
+
protected containerClass: import("@angular/core").WritableSignal<string>;
|
|
6
|
+
protected icon: import("@angular/core").WritableSignal<string>;
|
|
7
|
+
private elementRef;
|
|
8
|
+
constructor();
|
|
9
|
+
ngOnInit(): void;
|
|
10
|
+
protected handlerClickClose(e: Event): void;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LibUiServicesComponentsTextComponent, never>;
|
|
12
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LibUiServicesComponentsTextComponent, "libs_ui-services-notification-components-text", never, {}, {}, never, never, true, never>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Directive, input } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class LibUiServiceNotificationBaseComponent {
|
|
5
|
+
// #region PROPERTY
|
|
6
|
+
onDestroy = new Subject();
|
|
7
|
+
// #region INPUT
|
|
8
|
+
message = input('');
|
|
9
|
+
interpolateParams = input();
|
|
10
|
+
title = input('');
|
|
11
|
+
config = input({ type: 'success', timeRemove: 2000 });
|
|
12
|
+
removeComponent = input.required();
|
|
13
|
+
ngOnDestroy() {
|
|
14
|
+
this.onDestroy.next();
|
|
15
|
+
this.onDestroy.complete();
|
|
16
|
+
}
|
|
17
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibUiServiceNotificationBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
18
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: LibUiServiceNotificationBaseComponent, inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, interpolateParams: { classPropertyName: "interpolateParams", publicName: "interpolateParams", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, removeComponent: { classPropertyName: "removeComponent", publicName: "removeComponent", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
|
|
19
|
+
}
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibUiServiceNotificationBaseComponent, decorators: [{
|
|
21
|
+
type: Directive
|
|
22
|
+
}] });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9zcmMvY29tcG9uZW50cy9iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFhLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUcvQixNQUFNLE9BQU8scUNBQXFDO0lBQ2hELG1CQUFtQjtJQUNULFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRTFDLGdCQUFnQjtJQUNQLE9BQU8sR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDNUIsaUJBQWlCLEdBQUcsS0FBSyxFQUEyQixDQUFDO0lBQ3JELEtBQUssR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDMUIsTUFBTSxHQUFHLEtBQUssQ0FBMEIsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9FLGVBQWUsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUF5QyxDQUFDO0lBRW5GLFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQzt3R0FkVSxxQ0FBcUM7NEZBQXJDLHFDQUFxQzs7NEZBQXJDLHFDQUFxQztrQkFEakQsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgT25EZXN0cm95LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSU5vdGlmaWNhdGlvblRleHRDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL25vdGlmaWNhdGlvbic7XG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBMaWJVaVNlcnZpY2VOb3RpZmljYXRpb25CYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLy8gI3JlZ2lvbiBQUk9QRVJUWVxuICBwcm90ZWN0ZWQgb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvLyAjcmVnaW9uIElOUFVUXG4gIHJlYWRvbmx5IG1lc3NhZ2UgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgaW50ZXJwb2xhdGVQYXJhbXMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKTtcbiAgcmVhZG9ubHkgdGl0bGUgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgY29uZmlnID0gaW5wdXQ8SU5vdGlmaWNhdGlvblRleHRDb25maWc+KHsgdHlwZTogJ3N1Y2Nlc3MnLCB0aW1lUmVtb3ZlOiAyMDAwIH0pO1xuICByZWFkb25seSByZW1vdmVDb21wb25lbnQgPSBpbnB1dC5yZXF1aXJlZDwoY29tcG9uZW50OiB1bmtub3duKSA9PiBQcm9taXNlPHZvaWQ+PigpO1xuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub25EZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLm9uRGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './text/text.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9zcmMvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90ZXh0L3RleHQuY29tcG9uZW50JztcbiJdfQ==
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ElementRef, inject, signal } from '@angular/core';
|
|
2
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
3
|
+
import { fromEvent } from 'rxjs';
|
|
4
|
+
import { take, takeUntil } from 'rxjs/operators';
|
|
5
|
+
import { LibUiServiceNotificationBaseComponent } from '../base.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@ngx-translate/core";
|
|
8
|
+
export class LibUiServicesComponentsTextComponent extends LibUiServiceNotificationBaseComponent {
|
|
9
|
+
// #region PROPERTY
|
|
10
|
+
containerClass = signal('');
|
|
11
|
+
icon = signal('');
|
|
12
|
+
// #region INJECT
|
|
13
|
+
elementRef = inject(ElementRef);
|
|
14
|
+
constructor() {
|
|
15
|
+
super();
|
|
16
|
+
}
|
|
17
|
+
ngOnInit() {
|
|
18
|
+
switch (this.config().type) {
|
|
19
|
+
case 'success':
|
|
20
|
+
this.containerClass.set('libs-ui-toast_success');
|
|
21
|
+
this.icon.set('libs-ui-icon-check-circle-solid');
|
|
22
|
+
break;
|
|
23
|
+
case 'info':
|
|
24
|
+
this.containerClass.set('libs-ui-toast_info');
|
|
25
|
+
this.icon.set('libs-ui-icon-tooltip-solid');
|
|
26
|
+
break;
|
|
27
|
+
case 'error':
|
|
28
|
+
this.containerClass.set('libs-ui-toast_error');
|
|
29
|
+
this.icon.set('libs-ui-icon-close-circle-solid');
|
|
30
|
+
break;
|
|
31
|
+
case 'warn':
|
|
32
|
+
this.containerClass.set('libs-ui-toast_warning');
|
|
33
|
+
this.icon.set('libs-ui-icon-alert-triangle-solid');
|
|
34
|
+
break;
|
|
35
|
+
default:
|
|
36
|
+
this.containerClass.set('bg-[#6fd100] libs-ui-toast_success');
|
|
37
|
+
this.icon.set('mo-icn-toast_success');
|
|
38
|
+
}
|
|
39
|
+
const { eventName, callback } = this.config();
|
|
40
|
+
if (!eventName || !callback) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (eventName === 'click') {
|
|
44
|
+
this.containerClass.update((value) => `${value} cursor-pointer`);
|
|
45
|
+
}
|
|
46
|
+
fromEvent(this.elementRef.nativeElement, eventName).pipe(takeUntil(this.onDestroy), take(1)).subscribe(callback);
|
|
47
|
+
}
|
|
48
|
+
/* FUNCTIONS */
|
|
49
|
+
handlerClickClose(e) {
|
|
50
|
+
e.stopPropagation();
|
|
51
|
+
this.removeComponent()(e);
|
|
52
|
+
}
|
|
53
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibUiServicesComponentsTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
54
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibUiServicesComponentsTextComponent, isStandalone: true, selector: "libs_ui-services-notification-components-text", usesInheritance: true, ngImport: i0, template: "<div\n class=\"libs-ui-toast\"\n [class]=\"containerClass()\"\n [style.zIndex]=\"config().zIndex || 2000\">\n <div class=\"flex items-center\">\n <i class=\"{{ icon() }}\"></i>\n </div>\n <div class=\"flex flex-col w-full\">\n @if (title()) {\n <div\n class=\"libs-ui-font-h5m text-break\"\n [innerHtml]=\"title() | translate\"></div>\n }\n @if (message()) {\n <div\n class=\"text-break\"\n [class.libs-ui-font-h5r]=\"!title()\"\n [class.libs-ui-font-h7r]=\"title()\"\n [class.mt-[4ppx]]=\"title()\"\n [innerHtml]=\"message() | translate: interpolateParams() || {}\"></div>\n }\n </div>\n <div class=\"flex items-center\">\n <i\n class=\"libs-ui-icon-close mr-0 ml-[8px] cursor-pointer\"\n (click)=\"handlerClickClose($event)\"></i>\n </div>\n</div>\n", styles: ["@-webkit-keyframes animation-move{0%{right:-200px;opacity:0}to{right:12px;opacity:1}}@keyframes animation-move{0%{right:-200px;opacity:0}to{right:12px;opacity:1}}.libs-ui-toast{position:fixed;padding:12px 16px;display:flex;width:300px;flex-shrink:0;border-radius:8px;animation:animation-move .3s linear}.libs-ui-toast [class*=libs-ui-icon]{font-size:16px;margin-right:16px}.libs-ui-toast.libs-ui-toast_success{background-color:#e6faf0;color:#00bc62}.libs-ui-toast.libs-ui-toast_success [class*=libs-ui-icon]:before{color:#00bc62}.libs-ui-toast.libs-ui-toast_warning{background-color:#feeee6;color:#f05800}.libs-ui-toast.libs-ui-toast_warning [class*=libs-ui-icon]:before{color:#f05800}.libs-ui-toast.libs-ui-toast_error{background-color:#fdeaec;color:#ee2d41}.libs-ui-toast.libs-ui-toast_error [class*=libs-ui-icon]:before{color:#ee2d41}.libs-ui-toast.libs-ui-toast_info{background-color:#e9f1fe;color:#226ff5}.libs-ui-toast.libs-ui-toast_info [class*=libs-ui-icon]:before{color:#226ff5}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
55
|
+
}
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibUiServicesComponentsTextComponent, decorators: [{
|
|
57
|
+
type: Component,
|
|
58
|
+
args: [{ selector: 'libs_ui-services-notification-components-text', standalone: true, imports: [TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"libs-ui-toast\"\n [class]=\"containerClass()\"\n [style.zIndex]=\"config().zIndex || 2000\">\n <div class=\"flex items-center\">\n <i class=\"{{ icon() }}\"></i>\n </div>\n <div class=\"flex flex-col w-full\">\n @if (title()) {\n <div\n class=\"libs-ui-font-h5m text-break\"\n [innerHtml]=\"title() | translate\"></div>\n }\n @if (message()) {\n <div\n class=\"text-break\"\n [class.libs-ui-font-h5r]=\"!title()\"\n [class.libs-ui-font-h7r]=\"title()\"\n [class.mt-[4ppx]]=\"title()\"\n [innerHtml]=\"message() | translate: interpolateParams() || {}\"></div>\n }\n </div>\n <div class=\"flex items-center\">\n <i\n class=\"libs-ui-icon-close mr-0 ml-[8px] cursor-pointer\"\n (click)=\"handlerClickClose($event)\"></i>\n </div>\n</div>\n", styles: ["@-webkit-keyframes animation-move{0%{right:-200px;opacity:0}to{right:12px;opacity:1}}@keyframes animation-move{0%{right:-200px;opacity:0}to{right:12px;opacity:1}}.libs-ui-toast{position:fixed;padding:12px 16px;display:flex;width:300px;flex-shrink:0;border-radius:8px;animation:animation-move .3s linear}.libs-ui-toast [class*=libs-ui-icon]{font-size:16px;margin-right:16px}.libs-ui-toast.libs-ui-toast_success{background-color:#e6faf0;color:#00bc62}.libs-ui-toast.libs-ui-toast_success [class*=libs-ui-icon]:before{color:#00bc62}.libs-ui-toast.libs-ui-toast_warning{background-color:#feeee6;color:#f05800}.libs-ui-toast.libs-ui-toast_warning [class*=libs-ui-icon]:before{color:#f05800}.libs-ui-toast.libs-ui-toast_error{background-color:#fdeaec;color:#ee2d41}.libs-ui-toast.libs-ui-toast_error [class*=libs-ui-icon]:before{color:#ee2d41}.libs-ui-toast.libs-ui-toast_info{background-color:#e9f1fe;color:#226ff5}.libs-ui-toast.libs-ui-toast_info [class*=libs-ui-icon]:before{color:#226ff5}\n"] }]
|
|
59
|
+
}], ctorParameters: () => [] });
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9zcmMvY29tcG9uZW50cy90ZXh0L3RleHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9zZXJ2aWNlcy9ub3RpZmljYXRpb24vc3JjL2NvbXBvbmVudHMvdGV4dC90ZXh0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFxQixNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQVcxRSxNQUFNLE9BQU8sb0NBQXFDLFNBQVEscUNBQXFDO0lBQzdGLG1CQUFtQjtJQUNULGNBQWMsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDcEMsSUFBSSxHQUFHLE1BQU0sQ0FBUyxFQUFFLENBQUMsQ0FBQztJQUVwQyxpQkFBaUI7SUFDVCxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXhDO1FBQ0UsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO0lBRUQsUUFBUTtRQUNOLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLEtBQUssU0FBUztnQkFDWixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO2dCQUNqRCxNQUFNO1lBRVIsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7Z0JBQzVDLE1BQU07WUFFUixLQUFLLE9BQU87Z0JBQ1YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsaUNBQWlDLENBQUMsQ0FBQztnQkFDakQsTUFBTTtZQUVSLEtBQUssTUFBTTtnQkFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO2dCQUNuRCxNQUFNO1lBRVI7Z0JBQ0UsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsb0NBQW9DLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFOUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzVCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxTQUFTLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFDRCxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25ILENBQUM7SUFFRCxlQUFlO0lBRUwsaUJBQWlCLENBQUMsQ0FBUTtRQUNsQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7d0dBdERVLG9DQUFvQzs0RkFBcEMsb0NBQW9DLGdJQ2ZqRCxpMUJBNEJBLHNoQ0RoQlksZUFBZTs7NEZBR2Qsb0NBQW9DO2tCQVRoRCxTQUFTOytCQUVFLCtDQUErQyxjQUc3QyxJQUFJLFdBQ1AsQ0FBQyxlQUFlLENBQUMsbUJBQ1QsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IExpYlVpU2VydmljZU5vdGlmaWNhdGlvbkJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktc2VydmljZXMtbm90aWZpY2F0aW9uLWNvbXBvbmVudHMtdGV4dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIExpYlVpU2VydmljZXNDb21wb25lbnRzVGV4dENvbXBvbmVudCBleHRlbmRzIExpYlVpU2VydmljZU5vdGlmaWNhdGlvbkJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHJvdGVjdGVkIGNvbnRhaW5lckNsYXNzID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICBwcm90ZWN0ZWQgaWNvbiA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcblxuICAvLyAjcmVnaW9uIElOSkVDVFxuICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN3aXRjaCAodGhpcy5jb25maWcoKS50eXBlKSB7XG4gICAgICBjYXNlICdzdWNjZXNzJzpcbiAgICAgICAgdGhpcy5jb250YWluZXJDbGFzcy5zZXQoJ2xpYnMtdWktdG9hc3Rfc3VjY2VzcycpO1xuICAgICAgICB0aGlzLmljb24uc2V0KCdsaWJzLXVpLWljb24tY2hlY2stY2lyY2xlLXNvbGlkJyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdpbmZvJzpcbiAgICAgICAgdGhpcy5jb250YWluZXJDbGFzcy5zZXQoJ2xpYnMtdWktdG9hc3RfaW5mbycpO1xuICAgICAgICB0aGlzLmljb24uc2V0KCdsaWJzLXVpLWljb24tdG9vbHRpcC1zb2xpZCcpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICB0aGlzLmNvbnRhaW5lckNsYXNzLnNldCgnbGlicy11aS10b2FzdF9lcnJvcicpO1xuICAgICAgICB0aGlzLmljb24uc2V0KCdsaWJzLXVpLWljb24tY2xvc2UtY2lyY2xlLXNvbGlkJyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICd3YXJuJzpcbiAgICAgICAgdGhpcy5jb250YWluZXJDbGFzcy5zZXQoJ2xpYnMtdWktdG9hc3Rfd2FybmluZycpO1xuICAgICAgICB0aGlzLmljb24uc2V0KCdsaWJzLXVpLWljb24tYWxlcnQtdHJpYW5nbGUtc29saWQnKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuY29udGFpbmVyQ2xhc3Muc2V0KCdiZy1bIzZmZDEwMF0gbGlicy11aS10b2FzdF9zdWNjZXNzJyk7XG4gICAgICAgIHRoaXMuaWNvbi5zZXQoJ21vLWljbi10b2FzdF9zdWNjZXNzJyk7XG4gICAgfVxuICAgIGNvbnN0IHsgZXZlbnROYW1lLCBjYWxsYmFjayB9ID0gdGhpcy5jb25maWcoKTtcblxuICAgIGlmICghZXZlbnROYW1lIHx8ICFjYWxsYmFjaykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZXZlbnROYW1lID09PSAnY2xpY2snKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lckNsYXNzLnVwZGF0ZSgodmFsdWUpID0+IGAke3ZhbHVlfSBjdXJzb3ItcG9pbnRlcmApO1xuICAgIH1cbiAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGV2ZW50TmFtZSkucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpLCB0YWtlKDEpKS5zdWJzY3JpYmUoY2FsbGJhY2spO1xuICB9XG5cbiAgLyogRlVOQ1RJT05TICovXG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJDbGlja0Nsb3NlKGU6IEV2ZW50KSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnJlbW92ZUNvbXBvbmVudCgpKGUpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwibGlicy11aS10b2FzdFwiXG4gIFtjbGFzc109XCJjb250YWluZXJDbGFzcygpXCJcbiAgW3N0eWxlLnpJbmRleF09XCJjb25maWcoKS56SW5kZXggfHwgMjAwMFwiPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICA8aSBjbGFzcz1cInt7IGljb24oKSB9fVwiPjwvaT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHctZnVsbFwiPlxuICAgIEBpZiAodGl0bGUoKSkge1xuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImxpYnMtdWktZm9udC1oNW0gdGV4dC1icmVha1wiXG4gICAgICAgIFtpbm5lckh0bWxdPVwidGl0bGUoKSB8IHRyYW5zbGF0ZVwiPjwvZGl2PlxuICAgIH1cbiAgICBAaWYgKG1lc3NhZ2UoKSkge1xuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInRleHQtYnJlYWtcIlxuICAgICAgICBbY2xhc3MubGlicy11aS1mb250LWg1cl09XCIhdGl0bGUoKVwiXG4gICAgICAgIFtjbGFzcy5saWJzLXVpLWZvbnQtaDdyXT1cInRpdGxlKClcIlxuICAgICAgICBbY2xhc3MubXQtWzRwcHhdXT1cInRpdGxlKClcIlxuICAgICAgICBbaW5uZXJIdG1sXT1cIm1lc3NhZ2UoKSB8IHRyYW5zbGF0ZTogaW50ZXJwb2xhdGVQYXJhbXMoKSB8fCB7fVwiPjwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgIDxpXG4gICAgICBjbGFzcz1cImxpYnMtdWktaWNvbi1jbG9zZSBtci0wIG1sLVs4cHhdIGN1cnNvci1wb2ludGVyXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVyQ2xpY2tDbG9zZSgkZXZlbnQpXCI+PC9pPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './notification.service';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9zZXJ2aWNlcy9ub3RpZmljYXRpb24vc3JjL2ludGVyZmFjZXMvbm90aWZpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBDb21wb25lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBJTm90aWZpY2F0aW9uUXVldWUge1xuICBjb25maWc6IElOb3RpZmljYXRpb25UZXh0Q29uZmlnO1xuICBjb21wb25lbnQ6IENvbXBvbmVudFJlZjxhbnk+O1xuICB0aW1lb3V0OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5vdGlmaWNhdGlvblRleHRDb25maWcge1xuICB0eXBlOiAnc3VjY2VzcycgfCAnaW5mbycgfCAnZXJyb3InIHwgJ3dhcm4nO1xuICBwb3NpdGlvblJpZ2h0PzogbnVtYmVyO1xuICB6SW5kZXg/OiBudW1iZXI7XG4gIHRpbWVSZW1vdmU6IG51bWJlcjtcbiAgZXZlbnROYW1lPzogJ2NsaWNrJyB8ICdtb3VzZWVudGVyJztcbiAgY2FsbGJhY2s/OiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElOb3RpZmljYXRpb25UZXh0UHVibGljQ29uZmlnIHtcbiAgaW50ZXJwb2xhdGVQYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICB0aXRsZT86IHN0cmluZztcbiAgcG9zaXRpb25SaWdodD86IG51bWJlcjtcbiAgekluZGV4PzogbnVtYmVyO1xuICB0aW1lUmVtb3ZlPzogbnVtYmVyO1xuICBldmVudE5hbWU/OiAnY2xpY2snIHwgJ21vdXNlZW50ZXInO1xuICBjYWxsYmFjaz86ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5vdGlmaWNhdGlvblB1c2hGcm9tSUZyYW1lIHtcbiAgZnVuY3Rpb25OYW1lOiAnc3VjY2VzcycgfCAnaW5mbycgfCAnZXJyb3InIHwgJ3dhcm4nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICB0aW1lUmVtb3ZlPzogbnVtYmVyO1xufVxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicy11aS1zZXJ2aWNlcy1ub3RpZmljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9zcmMvbGlicy11aS1zZXJ2aWNlcy1ub3RpZmljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { Injectable, inject, signal } from '@angular/core';
|
|
2
|
+
import { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';
|
|
3
|
+
import { UtilsCommunicateMicro, encrypt, escapeHtml, get, isEmbedFrame } from '@libs-ui/utils';
|
|
4
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
5
|
+
import { Observable } from 'rxjs';
|
|
6
|
+
import { LibUiServicesComponentsTextComponent } from './components';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class LibsUiNotificationService {
|
|
9
|
+
// #region PROPERTY
|
|
10
|
+
notificationPermission = signal('default');
|
|
11
|
+
queueMessage = signal(new Array());
|
|
12
|
+
timeoutUpdatePosition = signal(0);
|
|
13
|
+
MAX_QUEUE_MESSAGE = 5;
|
|
14
|
+
isInit = signal(false);
|
|
15
|
+
messageNamePostToParent = signal('MICRO_SITE_PUSH_MESSAGE_FROM_CHILD');
|
|
16
|
+
// #region INJECT
|
|
17
|
+
dynamicService = inject(LibsUiDynamicComponentService);
|
|
18
|
+
translateService = inject(TranslateService);
|
|
19
|
+
constructor() {
|
|
20
|
+
this.notificationPermission.set(this.systemSupportNotification() ? 'default' : 'denied');
|
|
21
|
+
}
|
|
22
|
+
/* FUNCTIONS */
|
|
23
|
+
init(messageNameHandler, messageNamePostToParent) {
|
|
24
|
+
if (this.isInit()) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
this.isInit.set(true);
|
|
28
|
+
if (messageNamePostToParent) {
|
|
29
|
+
this.messageNamePostToParent.set(messageNamePostToParent);
|
|
30
|
+
}
|
|
31
|
+
UtilsCommunicateMicro.GetMessage(messageNameHandler).subscribe((e) => {
|
|
32
|
+
if (!isEmbedFrame()) {
|
|
33
|
+
const dataMessage = e.data.response;
|
|
34
|
+
this.showCompTypeText(dataMessage.message, undefined, dataMessage.title, { type: dataMessage.functionName, timeRemove: dataMessage.timeRemove || 2000 });
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
UtilsCommunicateMicro.PostMessageToParent(e.data);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
get TranslateService() {
|
|
41
|
+
return this.translateService;
|
|
42
|
+
}
|
|
43
|
+
systemSupportNotification() {
|
|
44
|
+
return 'Notification' in window;
|
|
45
|
+
}
|
|
46
|
+
systemRequestPermission() {
|
|
47
|
+
if (!this.systemSupportNotification()) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
Notification.requestPermission().then((permission) => (this.Permission = permission));
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
if (error instanceof TypeError) {
|
|
55
|
+
Notification.requestPermission((permission) => (this.Permission = permission));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
set Permission(permission) {
|
|
60
|
+
this.notificationPermission.set(permission);
|
|
61
|
+
}
|
|
62
|
+
systemSpawnNotification(title, options) {
|
|
63
|
+
return new Observable((obs) => {
|
|
64
|
+
if (!this.systemSupportNotification()) {
|
|
65
|
+
obs.complete();
|
|
66
|
+
}
|
|
67
|
+
if (this.notificationPermission() !== 'granted') {
|
|
68
|
+
obs.complete();
|
|
69
|
+
}
|
|
70
|
+
const notify = new Notification(title, options);
|
|
71
|
+
notify.onshow = (e) => {
|
|
72
|
+
return obs.next({
|
|
73
|
+
notification: notify,
|
|
74
|
+
event: e,
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
notify.onclick = (e) => {
|
|
78
|
+
notify.close();
|
|
79
|
+
window.focus();
|
|
80
|
+
return obs.next({
|
|
81
|
+
notification: notify,
|
|
82
|
+
event: e,
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
notify.onerror = (e) => {
|
|
86
|
+
return obs.error({
|
|
87
|
+
notification: notify,
|
|
88
|
+
event: e,
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
notify.onclose = () => {
|
|
92
|
+
return obs.complete();
|
|
93
|
+
};
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
showCompTypeTextSuccess(message, config) {
|
|
97
|
+
this.showCompTypeText(message, config?.interpolateParams, config?.title, { type: 'success', timeRemove: config?.timeRemove || 3000, positionRight: config?.positionRight, eventName: config?.eventName, callback: config?.callback });
|
|
98
|
+
}
|
|
99
|
+
showCompTypeTextError(message, config) {
|
|
100
|
+
this.showCompTypeText(message, config?.interpolateParams, config?.title, { type: 'error', timeRemove: config?.timeRemove || 3000, positionRight: config?.positionRight, eventName: config?.eventName, callback: config?.callback });
|
|
101
|
+
}
|
|
102
|
+
showCompTypeTextInfo(message, config) {
|
|
103
|
+
this.showCompTypeText(message, config?.interpolateParams, config?.title, { type: 'info', timeRemove: config?.timeRemove || 3000, positionRight: config?.positionRight, eventName: config?.eventName, callback: config?.callback });
|
|
104
|
+
}
|
|
105
|
+
showCompTypeTextWarning(message, config) {
|
|
106
|
+
this.showCompTypeText(message, config?.interpolateParams, config?.title, { type: 'warn', timeRemove: config?.timeRemove || 3000, positionRight: config?.positionRight, eventName: config?.eventName, callback: config?.callback });
|
|
107
|
+
}
|
|
108
|
+
showCompTypeText(message, interpolateParams, title, config = { type: 'success', timeRemove: 2000 }) {
|
|
109
|
+
if (!message) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
this.checkQueueMessage();
|
|
113
|
+
if (interpolateParams && typeof interpolateParams === 'object') {
|
|
114
|
+
Object.keys(interpolateParams).forEach((key) => {
|
|
115
|
+
interpolateParams[key] = escapeHtml(get(interpolateParams, key));
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
if (isEmbedFrame()) {
|
|
119
|
+
const messageTranslate = this.translateService.instant(message, interpolateParams);
|
|
120
|
+
return UtilsCommunicateMicro.PostMessageToParent({ type: this.messageNamePostToParent(), response: encrypt(JSON.stringify({ functionName: config.type, message: messageTranslate, title, timeRemove: config.timeRemove || 2000 })) });
|
|
121
|
+
}
|
|
122
|
+
const component = this.dynamicService.resolveComponentFactory(LibUiServicesComponentsTextComponent);
|
|
123
|
+
component.setInput('title', title);
|
|
124
|
+
component.setInput('message', message);
|
|
125
|
+
component.setInput('interpolateParams', interpolateParams);
|
|
126
|
+
component.setInput('config', config);
|
|
127
|
+
component.setInput('removeComponent', this.removeComponent.bind(this, component));
|
|
128
|
+
const timeout = setTimeout(() => {
|
|
129
|
+
this.removeComponent(component);
|
|
130
|
+
}, config?.timeRemove);
|
|
131
|
+
this.queueMessage.update((queue) => {
|
|
132
|
+
queue.push({
|
|
133
|
+
component,
|
|
134
|
+
config,
|
|
135
|
+
timeout,
|
|
136
|
+
});
|
|
137
|
+
return [...queue];
|
|
138
|
+
});
|
|
139
|
+
this.dynamicService.addToBody(component);
|
|
140
|
+
this.updatePositionMessage();
|
|
141
|
+
}
|
|
142
|
+
removeComponent(component) {
|
|
143
|
+
this.dynamicService.remove(component);
|
|
144
|
+
const indexRemove = this.queueMessage().findIndex((config) => config.component === component);
|
|
145
|
+
if (indexRemove !== -1) {
|
|
146
|
+
this.queueMessage.update((queue) => {
|
|
147
|
+
queue.splice(indexRemove, 1);
|
|
148
|
+
return [...queue];
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
checkQueueMessage() {
|
|
153
|
+
if (this.queueMessage.length < this.MAX_QUEUE_MESSAGE) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const firstQueue = this.queueMessage().shift();
|
|
157
|
+
clearTimeout(firstQueue.timeout);
|
|
158
|
+
this.dynamicService.remove(firstQueue.component);
|
|
159
|
+
this.updatePositionMessage();
|
|
160
|
+
}
|
|
161
|
+
updatePositionMessage() {
|
|
162
|
+
if (!this.queueMessage().length) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
clearTimeout(this.timeoutUpdatePosition());
|
|
166
|
+
this.timeoutUpdatePosition.set(setTimeout(() => {
|
|
167
|
+
let topMessage = 12;
|
|
168
|
+
this.queueMessage().forEach((message) => {
|
|
169
|
+
const firstEl = message.component.instance.elementRef.nativeElement.firstElementChild;
|
|
170
|
+
const rect = firstEl.getBoundingClientRect();
|
|
171
|
+
firstEl.style.top = `${topMessage}px`;
|
|
172
|
+
topMessage += rect.height + 12;
|
|
173
|
+
let right = message.config.positionRight ?? 12;
|
|
174
|
+
if (isEmbedFrame()) {
|
|
175
|
+
right = 40;
|
|
176
|
+
}
|
|
177
|
+
firstEl.style.right = `${right}px`;
|
|
178
|
+
});
|
|
179
|
+
}));
|
|
180
|
+
}
|
|
181
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiNotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
182
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiNotificationService, providedIn: 'root' });
|
|
183
|
+
}
|
|
184
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiNotificationService, decorators: [{
|
|
185
|
+
type: Injectable,
|
|
186
|
+
args: [{
|
|
187
|
+
providedIn: 'root',
|
|
188
|
+
}]
|
|
189
|
+
}], ctorParameters: () => [] });
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9zcmMvbm90aWZpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBTXBFLE1BQU0sT0FBTyx5QkFBeUI7SUFDcEMsbUJBQW1CO0lBQ1gsc0JBQXNCLEdBQUcsTUFBTSxDQUF5QixTQUFTLENBQUMsQ0FBQztJQUNuRSxZQUFZLEdBQUcsTUFBTSxDQUE0QixJQUFJLEtBQUssRUFBc0IsQ0FBQyxDQUFDO0lBQ2xGLHFCQUFxQixHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUNqQyxpQkFBaUIsR0FBVyxDQUFDLENBQUM7SUFDdkMsTUFBTSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNoQyx1QkFBdUIsR0FBRyxNQUFNLENBQVMsb0NBQW9DLENBQUMsQ0FBQztJQUV2RixpQkFBaUI7SUFDVCxjQUFjLEdBQUcsTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDdkQsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFcEQ7UUFDRSxJQUFJLENB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O2dCQUN0QyxVQUFVLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7Z0JBQy9CLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztnQkFFL0MsSUFBSSxZQUFZLEVBQUUsRUFBRSxDQUFDO29CQUNuQixLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUNiLENBQUM7Z0JBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxLQUFLLElBQUksQ0FBQztZQUNyQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO3dHQTVNVSx5QkFBeUI7NEdBQXpCLHlCQUF5QixjQUZ4QixNQUFNOzs0RkFFUCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBJbmplY3RhYmxlLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGlic1VpRHluYW1pY0NvbXBvbmVudFNlcnZpY2UgfSBmcm9tICdAbGlicy11aS9zZXJ2aWNlcy1keW5hbWljLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBVdGlsc0NvbW11bmljYXRlTWljcm8sIGVuY3J5cHQsIGVzY2FwZUh0bWwsIGdldCwgaXNFbWJlZEZyYW1lIH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTGliVWlTZXJ2aWNlc0NvbXBvbmVudHNUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IElOb3RpZmljYXRpb25QdXNoRnJvbUlGcmFtZSwgSU5vdGlmaWNhdGlvblF1ZXVlLCBJTm90aWZpY2F0aW9uVGV4dENvbmZpZywgSU5vdGlmaWNhdGlvblRleHRQdWJsaWNDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvbm90aWZpY2F0aW9uJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaU5vdGlmaWNhdGlvblNlcnZpY2Uge1xuICAvLyAjcmVnaW9uIFBST1BFUlRZXG4gIHByaXZhdGUgbm90aWZpY2F0aW9uUGVybWlzc2lvbiA9IHNpZ25hbDxOb3RpZmljYXRpb25QZXJtaXNzaW9uPignZGVmYXVsdCcpO1xuICBwcml2YXRlIHF1ZXVlTWVzc2FnZSA9IHNpZ25hbDxBcnJheTxJTm90aWZpY2F0aW9uUXVldWU+PihuZXcgQXJyYXk8SU5vdGlmaWNhdGlvblF1ZXVlPigpKTtcbiAgcHJpdmF0ZSB0aW1lb3V0VXBkYXRlUG9zaXRpb24gPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSByZWFkb25seSBNQVhfUVVFVUVfTUVTU0FHRTogbnVtYmVyID0gNTtcbiAgcHJpdmF0ZSBpc0luaXQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIG1lc3NhZ2VOYW1lUG9zdFRvUGFyZW50ID0gc2lnbmFsPHN0cmluZz4oJ01JQ1JPX1NJVEVfUFVTSF9NRVNTQUdFX0ZST01fQ0hJTEQnKTtcblxuICAvLyAjcmVnaW9uIElOSkVDVFxuICBwcml2YXRlIGR5bmFtaWNTZXJ2aWNlID0gaW5qZWN0KExpYnNVaUR5bmFtaWNDb21wb25lbnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMubm90aWZpY2F0aW9uUGVybWlzc2lvbi5zZXQodGhpcy5zeXN0ZW1TdXBwb3J0Tm90aWZpY2F0aW9uKCkgPyAnZGVmYXVsdCcgOiAnZGVuaWVkJyk7XG4gIH1cblxuICAvKiBGVU5DVElPTlMgKi9cbiAgcHVibGljIGluaXQobWVzc2FnZU5hbWVIYW5kbGVyOiBBcnJheTxzdHJpbmc+LCBtZXNzYWdlTmFtZVBvc3RUb1BhcmVudD86IHN0cmluZykge1xuICAgIGlmICh0aGlzLmlzSW5pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNJbml0LnNldCh0cnVlKTtcbiAgICBpZiAobWVzc2FnZU5hbWVQb3N0VG9QYXJlbnQpIHtcbiAgICAgIHRoaXMubWVzc2FnZU5hbWVQb3N0VG9QYXJlbnQuc2V0KG1lc3NhZ2VOYW1lUG9zdFRvUGFyZW50KTtcbiAgICB9XG4gICAgVXRpbHNDb21tdW5pY2F0ZU1pY3JvLkdldE1lc3NhZ2UobWVzc2FnZU5hbWVIYW5kbGVyKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgIGlmICghaXNFbWJlZEZyYW1lKCkpIHtcbiAgICAgICAgY29uc3QgZGF0YU1lc3NhZ2UgPSBlLmRhdGEucmVzcG9uc2UgYXMgSU5vdGlmaWNhdGlvblB1c2hGcm9tSUZyYW1lO1xuXG4gICAgICAgIHRoaXMuc2hvd0NvbXBUeXBlVGV4dChkYXRhTWVzc2FnZS5tZXNzYWdlLCB1bmRlZmluZWQsIGRhdGFNZXNzYWdlLnRpdGxlLCB7IHR5cGU6IGRhdGFNZXNzYWdlLmZ1bmN0aW9uTmFtZSwgdGltZVJlbW92ZTogZGF0YU1lc3NhZ2UudGltZVJlbW92ZSB8fCAyMDAwIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIFV0aWxzQ29tbXVuaWNhdGVNaWNyby5Qb3N0TWVzc2FnZVRvUGFyZW50KGUuZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IFRyYW5zbGF0ZVNlcnZpY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZTtcbiAgfVxuXG4gIHByaXZhdGUgc3lzdGVtU3VwcG9ydE5vdGlmaWNhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gJ05vdGlmaWNhdGlvbicgaW4gd2luZG93O1xuICB9XG5cbiAgcHVibGljIHN5c3RlbVJlcXVlc3RQZXJtaXNzaW9uKCkge1xuICAgIGlmICghdGhpcy5zeXN0ZW1TdXBwb3J0Tm90aWZpY2F0aW9uKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIE5vdGlmaWNhdGlvbi5yZXF1ZXN0UGVybWlzc2lvbigpLnRoZW4oKHBlcm1pc3Npb246IE5vdGlmaWNhdGlvblBlcm1pc3Npb24pID0+ICh0aGlzLlBlcm1pc3Npb24gPSBwZXJtaXNzaW9uKSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFR5cGVFcnJvcikge1xuICAgICAgICBOb3RpZmljYXRpb24ucmVxdWVzdFBlcm1pc3Npb24oKHBlcm1pc3Npb246IE5vdGlmaWNhdGlvblBlcm1pc3Npb24pID0+ICh0aGlzLlBlcm1pc3Npb24gPSBwZXJtaXNzaW9uKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXQgUGVybWlzc2lvbihwZXJtaXNzaW9uOiBOb3RpZmljYXRpb25QZXJtaXNzaW9uKSB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25QZXJtaXNzaW9uLnNldChwZXJtaXNzaW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBzeXN0ZW1TcGF3bk5vdGlmaWNhdGlvbih0aXRsZTogc3RyaW5nLCBvcHRpb25zPzogTm90aWZpY2F0aW9uT3B0aW9ucyk6IE9ic2VydmFibGU8dW5rbm93bj4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuc3lzdGVtU3VwcG9ydE5vdGlmaWNhdGlvbigpKSB7XG4gICAgICAgIG9icy5jb21wbGV0ZSgpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubm90aWZpY2F0aW9uUGVybWlzc2lvbigpICE9PSAnZ3JhbnRlZCcpIHtcbiAgICAgICAgb2JzLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBub3RpZnkgPSBuZXcgTm90aWZpY2F0aW9uKHRpdGxlLCBvcHRpb25zKTtcblxuICAgICAgbm90aWZ5Lm9uc2hvdyA9IChlKSA9PiB7XG4gICAgICAgIHJldHVybiBvYnMubmV4dCh7XG4gICAgICAgICAgbm90aWZpY2F0aW9uOiBub3RpZnksXG4gICAgICAgICAgZXZlbnQ6IGUsXG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIG5vdGlmeS5vbmNsaWNrID0gKGUpID0+IHtcbiAgICAgICAgbm90aWZ5LmNsb3NlKCk7XG4gICAgICAgIHdpbmRvdy5mb2N1cygpO1xuXG4gICAgICAgIHJldHVybiBvYnMubmV4dCh7XG4gICAgICAgICAgbm90aWZpY2F0aW9uOiBub3RpZnksXG4gICAgICAgICAgZXZlbnQ6IGUsXG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIG5vdGlmeS5vbmVycm9yID0gKGUpID0+IHtcbiAgICAgICAgcmV0dXJuIG9icy5lcnJvcih7XG4gICAgICAgICAgbm90aWZpY2F0aW9uOiBub3RpZnksXG4gICAgICAgICAgZXZlbnQ6IGUsXG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIG5vdGlmeS5vbmNsb3NlID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gb2JzLmNvbXBsZXRlKCk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNob3dDb21wVHlwZVRleHRTdWNjZXNzKG1lc3NhZ2U6IHN0cmluZywgY29uZmlnPzogSU5vdGlmaWNhdGlvblRleHRQdWJsaWNDb25maWcpIHtcbiAgICB0aGlzLnNob3dDb21wVHlwZVRleHQobWVzc2FnZSwgY29uZmlnPy5pbnRlcnBvbGF0ZVBhcmFtcywgY29uZmlnPy50aXRsZSwgeyB0eXBlOiAnc3VjY2VzcycsIHRpbWVSZW1vdmU6IGNvbmZpZz8udGltZVJlbW92ZSB8fCAzMDAwLCBwb3NpdGlvblJpZ2h0OiBjb25maWc/LnBvc2l0aW9uUmlnaHQsIGV2ZW50TmFtZTogY29uZmlnPy5ldmVudE5hbWUsIGNhbGxiYWNrOiBjb25maWc/LmNhbGxiYWNrIH0pO1xuICB9XG5cbiAgcHVibGljIHNob3dDb21wVHlwZVRleHRFcnJvcihtZXNzYWdlOiBzdHJpbmcsIGNvbmZpZz86IElOb3RpZmljYXRpb25UZXh0UHVibGljQ29uZmlnKSB7XG4gICAgdGhpcy5zaG93Q29tcFR5cGVUZXh0KG1lc3NhZ2UsIGNvbmZpZz8uaW50ZXJwb2xhdGVQYXJhbXMsIGNvbmZpZz8udGl0bGUsIHsgdHlwZTogJ2Vycm9yJywgdGltZVJlbW92ZTogY29uZmlnPy50aW1lUmVtb3ZlIHx8IDMwMDAsIHBvc2l0aW9uUmlnaHQ6IGNvbmZpZz8ucG9zaXRpb25SaWdodCwgZXZlbnROYW1lOiBjb25maWc/LmV2ZW50TmFtZSwgY2FsbGJhY2s6IGNvbmZpZz8uY2FsbGJhY2sgfSk7XG4gIH1cblxuICBwdWJsaWMgc2hvd0NvbXBUeXBlVGV4dEluZm8obWVzc2FnZTogc3RyaW5nLCBjb25maWc/OiBJTm90aWZpY2F0aW9uVGV4dFB1YmxpY0NvbmZpZykge1xuICAgIHRoaXMuc2hvd0NvbXBUeXBlVGV4dChtZXNzYWdlLCBjb25maWc/LmludGVycG9sYXRlUGFyYW1zLCBjb25maWc/LnRpdGxlLCB7IHR5cGU6ICdpbmZvJywgdGltZVJlbW92ZTogY29uZmlnPy50aW1lUmVtb3ZlIHx8IDMwMDAsIHBvc2l0aW9uUmlnaHQ6IGNvbmZpZz8ucG9zaXRpb25SaWdodCwgZXZlbnROYW1lOiBjb25maWc/LmV2ZW50TmFtZSwgY2FsbGJhY2s6IGNvbmZpZz8uY2FsbGJhY2sgfSk7XG4gIH1cblxuICBwdWJsaWMgc2hvd0NvbXBUeXBlVGV4dFdhcm5pbmcobWVzc2FnZTogc3RyaW5nLCBjb25maWc/OiBJTm90aWZpY2F0aW9uVGV4dFB1YmxpY0NvbmZpZykge1xuICAgIHRoaXMuc2hvd0NvbXBUeXBlVGV4dChtZXNzYWdlLCBjb25maWc/LmludGVycG9sYXRlUGFyYW1zLCBjb25maWc/LnRpdGxlLCB7IHR5cGU6ICd3YXJuJywgdGltZVJlbW92ZTogY29uZmlnPy50aW1lUmVtb3ZlIHx8IDMwMDAsIHBvc2l0aW9uUmlnaHQ6IGNvbmZpZz8ucG9zaXRpb25SaWdodCwgZXZlbnROYW1lOiBjb25maWc/LmV2ZW50TmFtZSwgY2FsbGJhY2s6IGNvbmZpZz8uY2FsbGJhY2sgfSk7XG4gIH1cblxuICBwcml2YXRlIHNob3dDb21wVHlwZVRleHQobWVzc2FnZTogc3RyaW5nLCBpbnRlcnBvbGF0ZVBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB0aXRsZT86IHN0cmluZywgY29uZmlnOiBJTm90aWZpY2F0aW9uVGV4dENvbmZpZyA9IHsgdHlwZTogJ3N1Y2Nlc3MnLCB0aW1lUmVtb3ZlOiAyMDAwIH0pOiB2b2lkIHtcbiAgICBpZiAoIW1lc3NhZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNoZWNrUXVldWVNZXNzYWdlKCk7XG4gICAgaWYgKGludGVycG9sYXRlUGFyYW1zICYmIHR5cGVvZiBpbnRlcnBvbGF0ZVBhcmFtcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIE9iamVjdC5rZXlzKGludGVycG9sYXRlUGFyYW1zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgaW50ZXJwb2xhdGVQYXJhbXNba2V5XSA9IGVzY2FwZUh0bWwoZ2V0KGludGVycG9sYXRlUGFyYW1zLCBrZXkpKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChpc0VtYmVkRnJhbWUoKSkge1xuICAgICAgY29uc3QgbWVzc2FnZVRyYW5zbGF0ZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KG1lc3NhZ2UsIGludGVycG9sYXRlUGFyYW1zKSBhcyBzdHJpbmc7XG5cbiAgICAgIHJldHVybiBVdGlsc0NvbW11bmljYXRlTWljcm8uUG9zdE1lc3NhZ2VUb1BhcmVudCh7IHR5cGU6IHRoaXMubWVzc2FnZU5hbWVQb3N0VG9QYXJlbnQoKSwgcmVzcG9uc2U6IGVuY3J5cHQoSlNPTi5zdHJpbmdpZnkoeyBmdW5jdGlvbk5hbWU6IGNvbmZpZy50eXBlLCBtZXNzYWdlOiBtZXNzYWdlVHJhbnNsYXRlLCB0aXRsZSwgdGltZVJlbW92ZTogY29uZmlnLnRpbWVSZW1vdmUgfHwgMjAwMCB9KSkgfSk7XG4gICAgfVxuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuZHluYW1pY1NlcnZpY2UucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoTGliVWlTZXJ2aWNlc0NvbXBvbmVudHNUZXh0Q29tcG9uZW50KTtcblxuICAgIGNvbXBvbmVudC5zZXRJbnB1dCgndGl0bGUnLCB0aXRsZSk7XG4gICAgY29tcG9uZW50LnNldElucHV0KCdtZXNzYWdlJywgbWVzc2FnZSk7XG4gICAgY29tcG9uZW50LnNldElucHV0KCdpbnRlcnBvbGF0ZVBhcmFtcycsIGludGVycG9sYXRlUGFyYW1zKTtcbiAgICBjb21wb25lbnQuc2V0SW5wdXQoJ2NvbmZpZycsIGNvbmZpZyk7XG4gICAgY29tcG9uZW50LnNldElucHV0KCdyZW1vdmVDb21wb25lbnQnLCB0aGlzLnJlbW92ZUNvbXBvbmVudC5iaW5kKHRoaXMsIGNvbXBvbmVudCkpO1xuICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucmVtb3ZlQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgfSwgY29uZmlnPy50aW1lUmVtb3ZlKTtcblxuICAgIHRoaXMucXVldWVNZXNzYWdlLnVwZGF0ZSgocXVldWUpID0+IHtcbiAgICAgIHF1ZXVlLnB1c2goe1xuICAgICAgICBjb21wb25lbnQsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgdGltZW91dCxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gWy4uLnF1ZXVlXTtcbiAgICB9KTtcbiAgICB0aGlzLmR5bmFtaWNTZXJ2aWNlLmFkZFRvQm9keShjb21wb25lbnQpO1xuICAgIHRoaXMudXBkYXRlUG9zaXRpb25NZXNzYWdlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUNvbXBvbmVudChjb21wb25lbnQ6IENvbXBvbmVudFJlZjx1bmtub3duPikge1xuICAgIHRoaXMuZHluYW1pY1NlcnZpY2UucmVtb3ZlKGNvbXBvbmVudCk7XG4gICAgY29uc3QgaW5kZXhSZW1vdmUgPSB0aGlzLnF1ZXVlTWVzc2FnZSgpLmZpbmRJbmRleCgoY29uZmlnKSA9PiBjb25maWcuY29tcG9uZW50ID09PSBjb21wb25lbnQpO1xuXG4gICAgaWYgKGluZGV4UmVtb3ZlICE9PSAtMSkge1xuICAgICAgdGhpcy5xdWV1ZU1lc3NhZ2UudXBkYXRlKChxdWV1ZSkgPT4ge1xuICAgICAgICBxdWV1ZS5zcGxpY2UoaW5kZXhSZW1vdmUsIDEpO1xuICAgICAgICByZXR1cm4gWy4uLnF1ZXVlXTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tRdWV1ZU1lc3NhZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucXVldWVNZXNzYWdlLmxlbmd0aCA8IHRoaXMuTUFYX1FVRVVFX01FU1NBR0UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmlyc3RRdWV1ZSA9IHRoaXMucXVldWVNZXNzYWdlKCkuc2hpZnQoKSBhcyBJTm90aWZpY2F0aW9uUXVldWU7XG5cbiAgICBjbGVhclRpbWVvdXQoZmlyc3RRdWV1ZS50aW1lb3V0KTtcbiAgICB0aGlzLmR5bmFtaWNTZXJ2aWNlLnJlbW92ZShmaXJzdFF1ZXVlLmNvbXBvbmVudCk7XG4gICAgdGhpcy51cGRhdGVQb3NpdGlvbk1lc3NhZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUG9zaXRpb25NZXNzYWdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5xdWV1ZU1lc3NhZ2UoKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dFVwZGF0ZVBvc2l0aW9uKCkpO1xuICAgIHRoaXMudGltZW91dFVwZGF0ZVBvc2l0aW9uLnNldChcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBsZXQgdG9wTWVzc2FnZSA9IDEyO1xuXG4gICAgICAgIHRoaXMucXVldWVNZXNzYWdlKCkuZm9yRWFjaCgobWVzc2FnZTogSU5vdGlmaWNhdGlvblF1ZXVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgZmlyc3RFbCA9IG1lc3NhZ2UuY29tcG9uZW50Lmluc3RhbmNlLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgICBjb25zdCByZWN0ID0gZmlyc3RFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAgIGZpcnN0RWwuc3R5bGUudG9wID0gYCR7dG9wTWVzc2FnZX1weGA7XG4gICAgICAgICAgdG9wTWVzc2FnZSArPSByZWN0LmhlaWdodCArIDEyO1xuICAgICAgICAgIGxldCByaWdodCA9IG1lc3NhZ2UuY29uZmlnLnBvc2l0aW9uUmlnaHQgPz8gMTI7XG5cbiAgICAgICAgICBpZiAoaXNFbWJlZEZyYW1lKCkpIHtcbiAgICAgICAgICAgIHJpZ2h0ID0gNDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZpcnN0RWwuc3R5bGUucmlnaHQgPSBgJHtyaWdodH1weGA7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, Directive, signal, inject, ElementRef, ChangeDetectionStrategy, Component, Injectable } from '@angular/core';
|
|
3
|
+
import { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';
|
|
4
|
+
import { UtilsCommunicateMicro, isEmbedFrame, escapeHtml, get, encrypt } from '@libs-ui/utils';
|
|
5
|
+
import * as i1 from '@ngx-translate/core';
|
|
6
|
+
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
7
|
+
import { Subject, fromEvent, Observable } from 'rxjs';
|
|
8
|
+
import { takeUntil, take } from 'rxjs/operators';
|
|
9
|
+
|
|
10
|
+
class LibUiServiceNotificationBaseComponent {
|
|
11
|
+
// #region PROPERTY
|
|
12
|
+
onDestroy = new Subject();
|
|
13
|
+
// #region INPUT
|
|
14
|
+
message = input('');
|
|
15
|
+
interpolateParams = input();
|
|
16
|
+
title = input('');
|
|
17
|
+
config = input({ type: 'success', timeRemove: 2000 });
|
|
18
|
+
removeComponent = input.required();
|
|
19
|
+
ngOnDestroy() {
|
|
20
|
+
this.onDestroy.next();
|
|
21
|
+
this.onDestroy.complete();
|
|
22
|
+
}
|
|
23
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibUiServiceNotificationBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
24
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: LibUiServiceNotificationBaseComponent, inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, interpolateParams: { classPropertyName: "interpolateParams", publicName: "interpolateParams", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, removeComponent: { classPropertyName: "removeComponent", publicName: "removeComponent", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
|
|
25
|
+
}
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibUiServiceNotificationBaseComponent, decorators: [{
|
|
27
|
+
type: Directive
|
|
28
|
+
}] });
|
|
29
|
+
|
|
30
|
+
class LibUiServicesComponentsTextComponent extends LibUiServiceNotificationBaseComponent {
|
|
31
|
+
// #region PROPERTY
|
|
32
|
+
containerClass = signal('');
|
|
33
|
+
icon = signal('');
|
|
34
|
+
// #region INJECT
|
|
35
|
+
elementRef = inject(ElementRef);
|
|
36
|
+
constructor() {
|
|
37
|
+
super();
|
|
38
|
+
}
|
|
39
|
+
ngOnInit() {
|
|
40
|
+
switch (this.config().type) {
|
|
41
|
+
case 'success':
|
|
42
|
+
this.containerClass.set('libs-ui-toast_success');
|
|
43
|
+
this.icon.set('libs-ui-icon-check-circle-solid');
|
|
44
|
+
break;
|
|
45
|
+
case 'info':
|
|
46
|
+
this.containerClass.set('libs-ui-toast_info');
|
|
47
|
+
this.icon.set('libs-ui-icon-tooltip-solid');
|
|
48
|
+
break;
|
|
49
|
+
case 'error':
|
|
50
|
+
this.containerClass.set('libs-ui-toast_error');
|
|
51
|
+
this.icon.set('libs-ui-icon-close-circle-solid');
|
|
52
|
+
break;
|
|
53
|
+
case 'warn':
|
|
54
|
+
this.containerClass.set('libs-ui-toast_warning');
|
|
55
|
+
this.icon.set('libs-ui-icon-alert-triangle-solid');
|
|
56
|
+
break;
|
|
57
|
+
default:
|
|
58
|
+
this.containerClass.set('bg-[#6fd100] libs-ui-toast_success');
|
|
59
|
+
this.icon.set('mo-icn-toast_success');
|
|
60
|
+
}
|
|
61
|
+
const { eventName, callback } = this.config();
|
|
62
|
+
if (!eventName || !callback) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (eventName === 'click') {
|
|
66
|
+
this.containerClass.update((value) => `${value} cursor-pointer`);
|
|
67
|
+
}
|
|
68
|
+
fromEvent(this.elementRef.nativeElement, eventName).pipe(takeUntil(this.onDestroy), take(1)).subscribe(callback);
|
|
69
|
+
}
|
|
70
|
+
/* FUNCTIONS */
|
|
71
|
+
handlerClickClose(e) {
|
|
72
|
+
e.stopPropagation();
|
|
73
|
+
this.removeComponent()(e);
|
|
74
|
+
}
|
|
75
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibUiServicesComponentsTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
76
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibUiServicesComponentsTextComponent, isStandalone: true, selector: "libs_ui-services-notification-components-text", usesInheritance: true, ngImport: i0, template: "<div\n class=\"libs-ui-toast\"\n [class]=\"containerClass()\"\n [style.zIndex]=\"config().zIndex || 2000\">\n <div class=\"flex items-center\">\n <i class=\"{{ icon() }}\"></i>\n </div>\n <div class=\"flex flex-col w-full\">\n @if (title()) {\n <div\n class=\"libs-ui-font-h5m text-break\"\n [innerHtml]=\"title() | translate\"></div>\n }\n @if (message()) {\n <div\n class=\"text-break\"\n [class.libs-ui-font-h5r]=\"!title()\"\n [class.libs-ui-font-h7r]=\"title()\"\n [class.mt-[4ppx]]=\"title()\"\n [innerHtml]=\"message() | translate: interpolateParams() || {}\"></div>\n }\n </div>\n <div class=\"flex items-center\">\n <i\n class=\"libs-ui-icon-close mr-0 ml-[8px] cursor-pointer\"\n (click)=\"handlerClickClose($event)\"></i>\n </div>\n</div>\n", styles: ["@-webkit-keyframes animation-move{0%{right:-200px;opacity:0}to{right:12px;opacity:1}}@keyframes animation-move{0%{right:-200px;opacity:0}to{right:12px;opacity:1}}.libs-ui-toast{position:fixed;padding:12px 16px;display:flex;width:300px;flex-shrink:0;border-radius:8px;animation:animation-move .3s linear}.libs-ui-toast [class*=libs-ui-icon]{font-size:16px;margin-right:16px}.libs-ui-toast.libs-ui-toast_success{background-color:#e6faf0;color:#00bc62}.libs-ui-toast.libs-ui-toast_success [class*=libs-ui-icon]:before{color:#00bc62}.libs-ui-toast.libs-ui-toast_warning{background-color:#feeee6;color:#f05800}.libs-ui-toast.libs-ui-toast_warning [class*=libs-ui-icon]:before{color:#f05800}.libs-ui-toast.libs-ui-toast_error{background-color:#fdeaec;color:#ee2d41}.libs-ui-toast.libs-ui-toast_error [class*=libs-ui-icon]:before{color:#ee2d41}.libs-ui-toast.libs-ui-toast_info{background-color:#e9f1fe;color:#226ff5}.libs-ui-toast.libs-ui-toast_info [class*=libs-ui-icon]:before{color:#226ff5}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
77
|
+
}
|
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibUiServicesComponentsTextComponent, decorators: [{
|
|
79
|
+
type: Component,
|
|
80
|
+
args: [{ selector: 'libs_ui-services-notification-components-text', standalone: true, imports: [TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"libs-ui-toast\"\n [class]=\"containerClass()\"\n [style.zIndex]=\"config().zIndex || 2000\">\n <div class=\"flex items-center\">\n <i class=\"{{ icon() }}\"></i>\n </div>\n <div class=\"flex flex-col w-full\">\n @if (title()) {\n <div\n class=\"libs-ui-font-h5m text-break\"\n [innerHtml]=\"title() | translate\"></div>\n }\n @if (message()) {\n <div\n class=\"text-break\"\n [class.libs-ui-font-h5r]=\"!title()\"\n [class.libs-ui-font-h7r]=\"title()\"\n [class.mt-[4ppx]]=\"title()\"\n [innerHtml]=\"message() | translate: interpolateParams() || {}\"></div>\n }\n </div>\n <div class=\"flex items-center\">\n <i\n class=\"libs-ui-icon-close mr-0 ml-[8px] cursor-pointer\"\n (click)=\"handlerClickClose($event)\"></i>\n </div>\n</div>\n", styles: ["@-webkit-keyframes animation-move{0%{right:-200px;opacity:0}to{right:12px;opacity:1}}@keyframes animation-move{0%{right:-200px;opacity:0}to{right:12px;opacity:1}}.libs-ui-toast{position:fixed;padding:12px 16px;display:flex;width:300px;flex-shrink:0;border-radius:8px;animation:animation-move .3s linear}.libs-ui-toast [class*=libs-ui-icon]{font-size:16px;margin-right:16px}.libs-ui-toast.libs-ui-toast_success{background-color:#e6faf0;color:#00bc62}.libs-ui-toast.libs-ui-toast_success [class*=libs-ui-icon]:before{color:#00bc62}.libs-ui-toast.libs-ui-toast_warning{background-color:#feeee6;color:#f05800}.libs-ui-toast.libs-ui-toast_warning [class*=libs-ui-icon]:before{color:#f05800}.libs-ui-toast.libs-ui-toast_error{background-color:#fdeaec;color:#ee2d41}.libs-ui-toast.libs-ui-toast_error [class*=libs-ui-icon]:before{color:#ee2d41}.libs-ui-toast.libs-ui-toast_info{background-color:#e9f1fe;color:#226ff5}.libs-ui-toast.libs-ui-toast_info [class*=libs-ui-icon]:before{color:#226ff5}\n"] }]
|
|
81
|
+
}], ctorParameters: () => [] });
|
|
82
|
+
|
|
83
|
+
class LibsUiNotificationService {
|
|
84
|
+
// #region PROPERTY
|
|
85
|
+
notificationPermission = signal('default');
|
|
86
|
+
queueMessage = signal(new Array());
|
|
87
|
+
timeoutUpdatePosition = signal(0);
|
|
88
|
+
MAX_QUEUE_MESSAGE = 5;
|
|
89
|
+
isInit = signal(false);
|
|
90
|
+
messageNamePostToParent = signal('MICRO_SITE_PUSH_MESSAGE_FROM_CHILD');
|
|
91
|
+
// #region INJECT
|
|
92
|
+
dynamicService = inject(LibsUiDynamicComponentService);
|
|
93
|
+
translateService = inject(TranslateService);
|
|
94
|
+
constructor() {
|
|
95
|
+
this.notificationPermission.set(this.systemSupportNotification() ? 'default' : 'denied');
|
|
96
|
+
}
|
|
97
|
+
/* FUNCTIONS */
|
|
98
|
+
init(messageNameHandler, messageNamePostToParent) {
|
|
99
|
+
if (this.isInit()) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
this.isInit.set(true);
|
|
103
|
+
if (messageNamePostToParent) {
|
|
104
|
+
this.messageNamePostToParent.set(messageNamePostToParent);
|
|
105
|
+
}
|
|
106
|
+
UtilsCommunicateMicro.GetMessage(messageNameHandler).subscribe((e) => {
|
|
107
|
+
if (!isEmbedFrame()) {
|
|
108
|
+
const dataMessage = e.data.response;
|
|
109
|
+
this.showCompTypeText(dataMessage.message, undefined, dataMessage.title, { type: dataMessage.functionName, timeRemove: dataMessage.timeRemove || 2000 });
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
UtilsCommunicateMicro.PostMessageToParent(e.data);
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
get TranslateService() {
|
|
116
|
+
return this.translateService;
|
|
117
|
+
}
|
|
118
|
+
systemSupportNotification() {
|
|
119
|
+
return 'Notification' in window;
|
|
120
|
+
}
|
|
121
|
+
systemRequestPermission() {
|
|
122
|
+
if (!this.systemSupportNotification()) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
try {
|
|
126
|
+
Notification.requestPermission().then((permission) => (this.Permission = permission));
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
if (error instanceof TypeError) {
|
|
130
|
+
Notification.requestPermission((permission) => (this.Permission = permission));
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
set Permission(permission) {
|
|
135
|
+
this.notificationPermission.set(permission);
|
|
136
|
+
}
|
|
137
|
+
systemSpawnNotification(title, options) {
|
|
138
|
+
return new Observable((obs) => {
|
|
139
|
+
if (!this.systemSupportNotification()) {
|
|
140
|
+
obs.complete();
|
|
141
|
+
}
|
|
142
|
+
if (this.notificationPermission() !== 'granted') {
|
|
143
|
+
obs.complete();
|
|
144
|
+
}
|
|
145
|
+
const notify = new Notification(title, options);
|
|
146
|
+
notify.onshow = (e) => {
|
|
147
|
+
return obs.next({
|
|
148
|
+
notification: notify,
|
|
149
|
+
event: e,
|
|
150
|
+
});
|
|
151
|
+
};
|
|
152
|
+
notify.onclick = (e) => {
|
|
153
|
+
notify.close();
|
|
154
|
+
window.focus();
|
|
155
|
+
return obs.next({
|
|
156
|
+
notification: notify,
|
|
157
|
+
event: e,
|
|
158
|
+
});
|
|
159
|
+
};
|
|
160
|
+
notify.onerror = (e) => {
|
|
161
|
+
return obs.error({
|
|
162
|
+
notification: notify,
|
|
163
|
+
event: e,
|
|
164
|
+
});
|
|
165
|
+
};
|
|
166
|
+
notify.onclose = () => {
|
|
167
|
+
return obs.complete();
|
|
168
|
+
};
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
showCompTypeTextSuccess(message, config) {
|
|
172
|
+
this.showCompTypeText(message, config?.interpolateParams, config?.title, { type: 'success', timeRemove: config?.timeRemove || 3000, positionRight: config?.positionRight, eventName: config?.eventName, callback: config?.callback });
|
|
173
|
+
}
|
|
174
|
+
showCompTypeTextError(message, config) {
|
|
175
|
+
this.showCompTypeText(message, config?.interpolateParams, config?.title, { type: 'error', timeRemove: config?.timeRemove || 3000, positionRight: config?.positionRight, eventName: config?.eventName, callback: config?.callback });
|
|
176
|
+
}
|
|
177
|
+
showCompTypeTextInfo(message, config) {
|
|
178
|
+
this.showCompTypeText(message, config?.interpolateParams, config?.title, { type: 'info', timeRemove: config?.timeRemove || 3000, positionRight: config?.positionRight, eventName: config?.eventName, callback: config?.callback });
|
|
179
|
+
}
|
|
180
|
+
showCompTypeTextWarning(message, config) {
|
|
181
|
+
this.showCompTypeText(message, config?.interpolateParams, config?.title, { type: 'warn', timeRemove: config?.timeRemove || 3000, positionRight: config?.positionRight, eventName: config?.eventName, callback: config?.callback });
|
|
182
|
+
}
|
|
183
|
+
showCompTypeText(message, interpolateParams, title, config = { type: 'success', timeRemove: 2000 }) {
|
|
184
|
+
if (!message) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
this.checkQueueMessage();
|
|
188
|
+
if (interpolateParams && typeof interpolateParams === 'object') {
|
|
189
|
+
Object.keys(interpolateParams).forEach((key) => {
|
|
190
|
+
interpolateParams[key] = escapeHtml(get(interpolateParams, key));
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
if (isEmbedFrame()) {
|
|
194
|
+
const messageTranslate = this.translateService.instant(message, interpolateParams);
|
|
195
|
+
return UtilsCommunicateMicro.PostMessageToParent({ type: this.messageNamePostToParent(), response: encrypt(JSON.stringify({ functionName: config.type, message: messageTranslate, title, timeRemove: config.timeRemove || 2000 })) });
|
|
196
|
+
}
|
|
197
|
+
const component = this.dynamicService.resolveComponentFactory(LibUiServicesComponentsTextComponent);
|
|
198
|
+
component.setInput('title', title);
|
|
199
|
+
component.setInput('message', message);
|
|
200
|
+
component.setInput('interpolateParams', interpolateParams);
|
|
201
|
+
component.setInput('config', config);
|
|
202
|
+
component.setInput('removeComponent', this.removeComponent.bind(this, component));
|
|
203
|
+
const timeout = setTimeout(() => {
|
|
204
|
+
this.removeComponent(component);
|
|
205
|
+
}, config?.timeRemove);
|
|
206
|
+
this.queueMessage.update((queue) => {
|
|
207
|
+
queue.push({
|
|
208
|
+
component,
|
|
209
|
+
config,
|
|
210
|
+
timeout,
|
|
211
|
+
});
|
|
212
|
+
return [...queue];
|
|
213
|
+
});
|
|
214
|
+
this.dynamicService.addToBody(component);
|
|
215
|
+
this.updatePositionMessage();
|
|
216
|
+
}
|
|
217
|
+
removeComponent(component) {
|
|
218
|
+
this.dynamicService.remove(component);
|
|
219
|
+
const indexRemove = this.queueMessage().findIndex((config) => config.component === component);
|
|
220
|
+
if (indexRemove !== -1) {
|
|
221
|
+
this.queueMessage.update((queue) => {
|
|
222
|
+
queue.splice(indexRemove, 1);
|
|
223
|
+
return [...queue];
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
checkQueueMessage() {
|
|
228
|
+
if (this.queueMessage.length < this.MAX_QUEUE_MESSAGE) {
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
const firstQueue = this.queueMessage().shift();
|
|
232
|
+
clearTimeout(firstQueue.timeout);
|
|
233
|
+
this.dynamicService.remove(firstQueue.component);
|
|
234
|
+
this.updatePositionMessage();
|
|
235
|
+
}
|
|
236
|
+
updatePositionMessage() {
|
|
237
|
+
if (!this.queueMessage().length) {
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
clearTimeout(this.timeoutUpdatePosition());
|
|
241
|
+
this.timeoutUpdatePosition.set(setTimeout(() => {
|
|
242
|
+
let topMessage = 12;
|
|
243
|
+
this.queueMessage().forEach((message) => {
|
|
244
|
+
const firstEl = message.component.instance.elementRef.nativeElement.firstElementChild;
|
|
245
|
+
const rect = firstEl.getBoundingClientRect();
|
|
246
|
+
firstEl.style.top = `${topMessage}px`;
|
|
247
|
+
topMessage += rect.height + 12;
|
|
248
|
+
let right = message.config.positionRight ?? 12;
|
|
249
|
+
if (isEmbedFrame()) {
|
|
250
|
+
right = 40;
|
|
251
|
+
}
|
|
252
|
+
firstEl.style.right = `${right}px`;
|
|
253
|
+
});
|
|
254
|
+
}));
|
|
255
|
+
}
|
|
256
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiNotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
257
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiNotificationService, providedIn: 'root' });
|
|
258
|
+
}
|
|
259
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiNotificationService, decorators: [{
|
|
260
|
+
type: Injectable,
|
|
261
|
+
args: [{
|
|
262
|
+
providedIn: 'root',
|
|
263
|
+
}]
|
|
264
|
+
}], ctorParameters: () => [] });
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Generated bundle index. Do not edit.
|
|
268
|
+
*/
|
|
269
|
+
|
|
270
|
+
export { LibsUiNotificationService };
|
|
271
|
+
//# sourceMappingURL=libs-ui-services-notification.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"libs-ui-services-notification.mjs","sources":["../../../../../libs-ui/services/notification/src/components/base.component.ts","../../../../../libs-ui/services/notification/src/components/text/text.component.ts","../../../../../libs-ui/services/notification/src/components/text/text.component.html","../../../../../libs-ui/services/notification/src/notification.service.ts","../../../../../libs-ui/services/notification/src/libs-ui-services-notification.ts"],"sourcesContent":["import { Directive, OnDestroy, input } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { INotificationTextConfig } from '../interfaces/notification';\n@Directive()\nexport class LibUiServiceNotificationBaseComponent implements OnDestroy {\n // #region PROPERTY\n protected onDestroy = new Subject<void>();\n\n // #region INPUT\n readonly message = input<string>('');\n readonly interpolateParams = input<Record<string, unknown>>();\n readonly title = input<string>('');\n readonly config = input<INotificationTextConfig>({ type: 'success', timeRemove: 2000 });\n readonly removeComponent = input.required<(component: unknown) => Promise<void>>();\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, OnInit, inject, signal } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { fromEvent } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { LibUiServiceNotificationBaseComponent } from '../base.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-services-notification-components-text',\n templateUrl: './text.component.html',\n styleUrls: ['./text.component.scss'],\n standalone: true,\n imports: [TranslateModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibUiServicesComponentsTextComponent extends LibUiServiceNotificationBaseComponent implements OnInit, OnDestroy {\n // #region PROPERTY\n protected containerClass = signal<string>('');\n protected icon = signal<string>('');\n\n // #region INJECT\n private elementRef = inject(ElementRef);\n\n constructor() {\n super();\n }\n\n ngOnInit(): void {\n switch (this.config().type) {\n case 'success':\n this.containerClass.set('libs-ui-toast_success');\n this.icon.set('libs-ui-icon-check-circle-solid');\n break;\n\n case 'info':\n this.containerClass.set('libs-ui-toast_info');\n this.icon.set('libs-ui-icon-tooltip-solid');\n break;\n\n case 'error':\n this.containerClass.set('libs-ui-toast_error');\n this.icon.set('libs-ui-icon-close-circle-solid');\n break;\n\n case 'warn':\n this.containerClass.set('libs-ui-toast_warning');\n this.icon.set('libs-ui-icon-alert-triangle-solid');\n break;\n\n default:\n this.containerClass.set('bg-[#6fd100] libs-ui-toast_success');\n this.icon.set('mo-icn-toast_success');\n }\n const { eventName, callback } = this.config();\n\n if (!eventName || !callback) {\n return;\n }\n if (eventName === 'click') {\n this.containerClass.update((value) => `${value} cursor-pointer`);\n }\n fromEvent(this.elementRef.nativeElement, eventName).pipe(takeUntil(this.onDestroy), take(1)).subscribe(callback);\n }\n\n /* FUNCTIONS */\n\n protected handlerClickClose(e: Event) {\n e.stopPropagation();\n this.removeComponent()(e);\n }\n}\n","<div\n class=\"libs-ui-toast\"\n [class]=\"containerClass()\"\n [style.zIndex]=\"config().zIndex || 2000\">\n <div class=\"flex items-center\">\n <i class=\"{{ icon() }}\"></i>\n </div>\n <div class=\"flex flex-col w-full\">\n @if (title()) {\n <div\n class=\"libs-ui-font-h5m text-break\"\n [innerHtml]=\"title() | translate\"></div>\n }\n @if (message()) {\n <div\n class=\"text-break\"\n [class.libs-ui-font-h5r]=\"!title()\"\n [class.libs-ui-font-h7r]=\"title()\"\n [class.mt-[4ppx]]=\"title()\"\n [innerHtml]=\"message() | translate: interpolateParams() || {}\"></div>\n }\n </div>\n <div class=\"flex items-center\">\n <i\n class=\"libs-ui-icon-close mr-0 ml-[8px] cursor-pointer\"\n (click)=\"handlerClickClose($event)\"></i>\n </div>\n</div>\n","import { ComponentRef, Injectable, inject, signal } from '@angular/core';\nimport { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';\nimport { UtilsCommunicateMicro, encrypt, escapeHtml, get, isEmbedFrame } from '@libs-ui/utils';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport { LibUiServicesComponentsTextComponent } from './components';\nimport { INotificationPushFromIFrame, INotificationQueue, INotificationTextConfig, INotificationTextPublicConfig } from './interfaces/notification';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LibsUiNotificationService {\n // #region PROPERTY\n private notificationPermission = signal<NotificationPermission>('default');\n private queueMessage = signal<Array<INotificationQueue>>(new Array<INotificationQueue>());\n private timeoutUpdatePosition = signal<number>(0);\n private readonly MAX_QUEUE_MESSAGE: number = 5;\n private isInit = signal<boolean>(false);\n private messageNamePostToParent = signal<string>('MICRO_SITE_PUSH_MESSAGE_FROM_CHILD');\n\n // #region INJECT\n private dynamicService = inject(LibsUiDynamicComponentService);\n private translateService = inject(TranslateService);\n\n constructor() {\n this.notificationPermission.set(this.systemSupportNotification() ? 'default' : 'denied');\n }\n\n /* FUNCTIONS */\n public init(messageNameHandler: Array<string>, messageNamePostToParent?: string) {\n if (this.isInit()) {\n return;\n }\n this.isInit.set(true);\n if (messageNamePostToParent) {\n this.messageNamePostToParent.set(messageNamePostToParent);\n }\n UtilsCommunicateMicro.GetMessage(messageNameHandler).subscribe((e) => {\n if (!isEmbedFrame()) {\n const dataMessage = e.data.response as INotificationPushFromIFrame;\n\n this.showCompTypeText(dataMessage.message, undefined, dataMessage.title, { type: dataMessage.functionName, timeRemove: dataMessage.timeRemove || 2000 });\n\n return;\n }\n UtilsCommunicateMicro.PostMessageToParent(e.data);\n });\n }\n\n public get TranslateService() {\n return this.translateService;\n }\n\n private systemSupportNotification(): boolean {\n return 'Notification' in window;\n }\n\n public systemRequestPermission() {\n if (!this.systemSupportNotification()) {\n return;\n }\n try {\n Notification.requestPermission().then((permission: NotificationPermission) => (this.Permission = permission));\n } catch (error) {\n if (error instanceof TypeError) {\n Notification.requestPermission((permission: NotificationPermission) => (this.Permission = permission));\n }\n }\n }\n\n private set Permission(permission: NotificationPermission) {\n this.notificationPermission.set(permission);\n }\n\n public systemSpawnNotification(title: string, options?: NotificationOptions): Observable<unknown> {\n return new Observable((obs) => {\n if (!this.systemSupportNotification()) {\n obs.complete();\n }\n if (this.notificationPermission() !== 'granted') {\n obs.complete();\n }\n const notify = new Notification(title, options);\n\n notify.onshow = (e) => {\n return obs.next({\n notification: notify,\n event: e,\n });\n };\n notify.onclick = (e) => {\n notify.close();\n window.focus();\n\n return obs.next({\n notification: notify,\n event: e,\n });\n };\n notify.onerror = (e) => {\n return obs.error({\n notification: notify,\n event: e,\n });\n };\n notify.onclose = () => {\n return obs.complete();\n };\n });\n }\n\n public showCompTypeTextSuccess(message: string, config?: INotificationTextPublicConfig) {\n this.showCompTypeText(message, config?.interpolateParams, config?.title, { type: 'success', timeRemove: config?.timeRemove || 3000, positionRight: config?.positionRight, eventName: config?.eventName, callback: config?.callback });\n }\n\n public showCompTypeTextError(message: string, config?: INotificationTextPublicConfig) {\n this.showCompTypeText(message, config?.interpolateParams, config?.title, { type: 'error', timeRemove: config?.timeRemove || 3000, positionRight: config?.positionRight, eventName: config?.eventName, callback: config?.callback });\n }\n\n public showCompTypeTextInfo(message: string, config?: INotificationTextPublicConfig) {\n this.showCompTypeText(message, config?.interpolateParams, config?.title, { type: 'info', timeRemove: config?.timeRemove || 3000, positionRight: config?.positionRight, eventName: config?.eventName, callback: config?.callback });\n }\n\n public showCompTypeTextWarning(message: string, config?: INotificationTextPublicConfig) {\n this.showCompTypeText(message, config?.interpolateParams, config?.title, { type: 'warn', timeRemove: config?.timeRemove || 3000, positionRight: config?.positionRight, eventName: config?.eventName, callback: config?.callback });\n }\n\n private showCompTypeText(message: string, interpolateParams?: Record<string, unknown>, title?: string, config: INotificationTextConfig = { type: 'success', timeRemove: 2000 }): void {\n if (!message) {\n return;\n }\n\n this.checkQueueMessage();\n if (interpolateParams && typeof interpolateParams === 'object') {\n Object.keys(interpolateParams).forEach((key) => {\n interpolateParams[key] = escapeHtml(get(interpolateParams, key));\n });\n }\n\n if (isEmbedFrame()) {\n const messageTranslate = this.translateService.instant(message, interpolateParams) as string;\n\n return UtilsCommunicateMicro.PostMessageToParent({ type: this.messageNamePostToParent(), response: encrypt(JSON.stringify({ functionName: config.type, message: messageTranslate, title, timeRemove: config.timeRemove || 2000 })) });\n }\n const component = this.dynamicService.resolveComponentFactory(LibUiServicesComponentsTextComponent);\n\n component.setInput('title', title);\n component.setInput('message', message);\n component.setInput('interpolateParams', interpolateParams);\n component.setInput('config', config);\n component.setInput('removeComponent', this.removeComponent.bind(this, component));\n const timeout = setTimeout(() => {\n this.removeComponent(component);\n }, config?.timeRemove);\n\n this.queueMessage.update((queue) => {\n queue.push({\n component,\n config,\n timeout,\n });\n\n return [...queue];\n });\n this.dynamicService.addToBody(component);\n this.updatePositionMessage();\n }\n\n private removeComponent(component: ComponentRef<unknown>) {\n this.dynamicService.remove(component);\n const indexRemove = this.queueMessage().findIndex((config) => config.component === component);\n\n if (indexRemove !== -1) {\n this.queueMessage.update((queue) => {\n queue.splice(indexRemove, 1);\n return [...queue];\n });\n }\n }\n\n private checkQueueMessage(): void {\n if (this.queueMessage.length < this.MAX_QUEUE_MESSAGE) {\n return;\n }\n const firstQueue = this.queueMessage().shift() as INotificationQueue;\n\n clearTimeout(firstQueue.timeout);\n this.dynamicService.remove(firstQueue.component);\n this.updatePositionMessage();\n }\n\n private updatePositionMessage(): void {\n if (!this.queueMessage().length) {\n return;\n }\n clearTimeout(this.timeoutUpdatePosition());\n this.timeoutUpdatePosition.set(\n setTimeout(() => {\n let topMessage = 12;\n\n this.queueMessage().forEach((message: INotificationQueue) => {\n const firstEl = message.component.instance.elementRef.nativeElement.firstElementChild;\n const rect = firstEl.getBoundingClientRect();\n\n firstEl.style.top = `${topMessage}px`;\n topMessage += rect.height + 12;\n let right = message.config.positionRight ?? 12;\n\n if (isEmbedFrame()) {\n right = 40;\n }\n firstEl.style.right = `${right}px`;\n });\n })\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './notification.service';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ComponentRef } from '@angular/core';
|
|
2
|
+
export interface INotificationQueue {
|
|
3
|
+
config: INotificationTextConfig;
|
|
4
|
+
component: ComponentRef<any>;
|
|
5
|
+
timeout: any;
|
|
6
|
+
}
|
|
7
|
+
export interface INotificationTextConfig {
|
|
8
|
+
type: 'success' | 'info' | 'error' | 'warn';
|
|
9
|
+
positionRight?: number;
|
|
10
|
+
zIndex?: number;
|
|
11
|
+
timeRemove: number;
|
|
12
|
+
eventName?: 'click' | 'mouseenter';
|
|
13
|
+
callback?: () => void;
|
|
14
|
+
}
|
|
15
|
+
export interface INotificationTextPublicConfig {
|
|
16
|
+
interpolateParams?: Record<string, any>;
|
|
17
|
+
title?: string;
|
|
18
|
+
positionRight?: number;
|
|
19
|
+
zIndex?: number;
|
|
20
|
+
timeRemove?: number;
|
|
21
|
+
eventName?: 'click' | 'mouseenter';
|
|
22
|
+
callback?: () => void;
|
|
23
|
+
}
|
|
24
|
+
export interface INotificationPushFromIFrame {
|
|
25
|
+
functionName: 'success' | 'info' | 'error' | 'warn';
|
|
26
|
+
message: string;
|
|
27
|
+
title?: string;
|
|
28
|
+
timeRemove?: number;
|
|
29
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { INotificationTextPublicConfig } from './interfaces/notification';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class LibsUiNotificationService {
|
|
6
|
+
private notificationPermission;
|
|
7
|
+
private queueMessage;
|
|
8
|
+
private timeoutUpdatePosition;
|
|
9
|
+
private readonly MAX_QUEUE_MESSAGE;
|
|
10
|
+
private isInit;
|
|
11
|
+
private messageNamePostToParent;
|
|
12
|
+
private dynamicService;
|
|
13
|
+
private translateService;
|
|
14
|
+
constructor();
|
|
15
|
+
init(messageNameHandler: Array<string>, messageNamePostToParent?: string): void;
|
|
16
|
+
get TranslateService(): TranslateService;
|
|
17
|
+
private systemSupportNotification;
|
|
18
|
+
systemRequestPermission(): void;
|
|
19
|
+
private set Permission(value);
|
|
20
|
+
systemSpawnNotification(title: string, options?: NotificationOptions): Observable<unknown>;
|
|
21
|
+
showCompTypeTextSuccess(message: string, config?: INotificationTextPublicConfig): void;
|
|
22
|
+
showCompTypeTextError(message: string, config?: INotificationTextPublicConfig): void;
|
|
23
|
+
showCompTypeTextInfo(message: string, config?: INotificationTextPublicConfig): void;
|
|
24
|
+
showCompTypeTextWarning(message: string, config?: INotificationTextPublicConfig): void;
|
|
25
|
+
private showCompTypeText;
|
|
26
|
+
private removeComponent;
|
|
27
|
+
private checkQueueMessage;
|
|
28
|
+
private updatePositionMessage;
|
|
29
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiNotificationService, never>;
|
|
30
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<LibsUiNotificationService>;
|
|
31
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@libs-ui/services-notification",
|
|
3
|
+
"version": "0.1.1-1",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/core": ">=18.0.0",
|
|
6
|
+
"rxjs": "~7.8.0",
|
|
7
|
+
"@ngx-translate/core": "^15.0.0",
|
|
8
|
+
"@libs-ui/services-dynamic-component": "0.1.1-1",
|
|
9
|
+
"@libs-ui/utils": "0.1.1-1"
|
|
10
|
+
},
|
|
11
|
+
"sideEffects": false,
|
|
12
|
+
"module": "fesm2022/libs-ui-services-notification.mjs",
|
|
13
|
+
"typings": "index.d.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
"./package.json": {
|
|
16
|
+
"default": "./package.json"
|
|
17
|
+
},
|
|
18
|
+
".": {
|
|
19
|
+
"types": "./index.d.ts",
|
|
20
|
+
"esm2022": "./esm2022/libs-ui-services-notification.mjs",
|
|
21
|
+
"esm": "./esm2022/libs-ui-services-notification.mjs",
|
|
22
|
+
"default": "./fesm2022/libs-ui-services-notification.mjs"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"tslib": "^2.3.0"
|
|
27
|
+
}
|
|
28
|
+
}
|