myrta-ui 17.1.63 → 17.1.64
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/esm2022/lib/services/index.mjs +2 -1
- package/esm2022/lib/services/notify-service/components/index.mjs +2 -0
- package/esm2022/lib/services/notify-service/components/notification/notification.component.mjs +21 -0
- package/esm2022/lib/services/notify-service/enums/index.mjs +3 -0
- package/esm2022/lib/services/notify-service/enums/notification-position.enum.mjs +8 -0
- package/esm2022/lib/services/notify-service/enums/notification-type.enum.mjs +8 -0
- package/esm2022/lib/services/notify-service/index.mjs +4 -0
- package/esm2022/lib/services/notify-service/models/index.mjs +2 -0
- package/esm2022/lib/services/notify-service/models/notification-config.model.mjs +2 -0
- package/esm2022/lib/services/notify-service/models/notification-state.model.mjs +2 -0
- package/esm2022/lib/services/notify-service/notification.service.mjs +125 -0
- package/fesm2022/myrta-ui.mjs +153 -2
- package/fesm2022/myrta-ui.mjs.map +1 -1
- package/lib/services/index.d.ts +1 -0
- package/lib/services/notify-service/components/index.d.ts +1 -0
- package/lib/services/notify-service/components/notification/notification.component.d.ts +13 -0
- package/lib/services/notify-service/enums/index.d.ts +2 -0
- package/lib/services/notify-service/enums/notification-position.enum.d.ts +6 -0
- package/lib/services/notify-service/enums/notification-type.enum.d.ts +6 -0
- package/lib/services/notify-service/index.d.ts +4 -0
- package/lib/services/notify-service/models/index.d.ts +2 -0
- package/lib/services/notify-service/models/notification-config.model.d.ts +15 -0
- package/lib/services/notify-service/models/notification-state.model.d.ts +11 -0
- package/lib/services/notify-service/notification.service.d.ts +27 -0
- package/package.json +1 -1
|
@@ -10,4 +10,5 @@ export * from './toaster-service/toaster-service.module';
|
|
|
10
10
|
export * from './toaster-service/toaster-service.service';
|
|
11
11
|
export * from './toaster-service/models/toaster.model';
|
|
12
12
|
export * from './toaster-service/config';
|
|
13
|
-
|
|
13
|
+
export * from './notify-service';
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUNBQW1DLENBQUM7QUFFbEQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDZCQUE2QixDQUFDO0FBRTVDLGNBQWMsY0FBYyxDQUFDO0FBRTdCLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMseUJBQXlCLENBQUM7QUFFeEMsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYywwQkFBMEIsQ0FBQztBQUV6QyxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbXJ4LWZvcm0tdmFsaWRhdG9yL21yeC1mb3JtLXZhbGlkYXRvcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbXJ4LWZvcm0tdmFsaWRhdG9yL21vZGVscyc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL3NhdmUtc3RvcmUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9tb2RhbC1zZXJ2aWNlL21vZGFsLXNlcnZpY2UubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9tb2RhbC1zZXJ2aWNlL21vZGVscy9tb2RhbC1jb25maWcubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL21vZGFsLXNlcnZpY2UvbW9kYWwtc2VydmljZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9tb2RhbC1zZXJ2aWNlL2hlbHBlcnMnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi90b2FzdGVyLXNlcnZpY2UvdG9hc3Rlci1zZXJ2aWNlLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdG9hc3Rlci1zZXJ2aWNlL3RvYXN0ZXItc2VydmljZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi90b2FzdGVyLXNlcnZpY2UvbW9kZWxzL3RvYXN0ZXIubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RvYXN0ZXItc2VydmljZS9jb25maWcnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9ub3RpZnktc2VydmljZSc7XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { NotifyComponent } from './notification/notification.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL3NlcnZpY2VzL25vdGlmeS1zZXJ2aWNlL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgTm90aWZ5Q29tcG9uZW50IH0gZnJvbSAnLi9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLmNvbXBvbmVudCc7XHJcbiJdfQ==
|
package/esm2022/lib/services/notify-service/components/notification/notification.component.mjs
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { NotifyType } from '../../enums/notification-type.enum';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, EventEmitter } from '@angular/core';
|
|
3
|
+
import { SafeModule } from '../../../../pipes/safe/safe.module';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../../../pipes/safe/safe.pipe";
|
|
6
|
+
export class NotifyComponent {
|
|
7
|
+
config = { title: '', message: '', type: NotifyType.Info };
|
|
8
|
+
NotifyType = NotifyType;
|
|
9
|
+
close = new EventEmitter();
|
|
10
|
+
pause = new EventEmitter();
|
|
11
|
+
resume = new EventEmitter();
|
|
12
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotifyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: NotifyComponent, isStandalone: true, selector: "app-notification", ngImport: i0, template: "<div class=\"mrx-notify-body\" [class]=\"config.type\" (mouseenter)=\"pause.emit()\" (mouseleave)=\"resume.emit()\">\r\n <div class=\"mrx-notify-body__icon\">\r\n @switch (config.type) {\r\n @case (NotifyType.Positive) {\r\n <span class=\"mrx-icon icon-check color-positive icon-font-16\"></span>\r\n }\r\n @case (NotifyType.Negative) {\r\n <span class=\"mrx-icon icon-close color-negative icon-font-16\"></span>\r\n }\r\n @case (NotifyType.Attention) {\r\n <span class=\"mrx-icon icon-attention color-attention icon-font-16\"></span>\r\n }\r\n @default {\r\n <span class=\"mrx-icon icon-info color-info icon-font-16\"></span>\r\n }\r\n }\r\n </div>\r\n <div class=\"mrx-notify-body__content\">\r\n <div class=\"mrx-notify-body__content--title\">{{ config.title }}</div>\r\n\r\n @if (config.message) {\r\n @if (!config.options?.enableHtml) {\r\n <div class=\"mrx-notify-body__content--text\">{{ config.message }}</div>\r\n } @else {\r\n <div class=\"mrx-notify-body__content--text\" [innerHTML]=\"config.message | safe\"></div>\r\n }\r\n }\r\n </div>\r\n\r\n @if (config.options?.closeButton) {\r\n <span (click)=\"close.emit()\" class=\"mrx-icon icon-close icon-font-16 mrx-notify-body__close\"></span>\r\n }\r\n</div>\r\n", styles: [".mrx-notify-body{position:relative;display:flex;align-items:center;gap:var(--spacing-2, 8px);pointer-events:auto;border-radius:var(--border-radius-1, 4px);box-shadow:0 1px 4px #3a3a3a4d;width:300px;max-width:calc(100vw - 32px);min-height:56px;padding:var(--spacing-4, 16px) var(--spacing-6, 24px) var(--spacing-4, 16px) var(--spacing-4, 16px);margin:10px 0}.mrx-notify-body__icon{display:flex;align-items:center;justify-content:center;width:24px;min-width:24px;height:24px;min-height:24px;border-radius:50%;background:#fff}.mrx-notify-body__content{display:flex;flex-direction:column;gap:var(--spacing-1, 4px);width:100%}.mrx-notify-body__content--title{font-family:var(--body-md-bold-font-family, \"PT Sans\");font-size:var(--body-md-bold-font-size, 14px);font-weight:var(--body-md-bold-font-weight, 700);line-height:var(--body-md-bold-line-height, 16px)}.mrx-notify-body__content--text{font-family:var(--body-md-font-family, \"PT Sans\");font-size:var(--body-md-font-size, 14px);font-weight:var(--body-md-font-weight, 400);line-height:var(--body-md-line-height, 20px)}.mrx-notify-body__close{position:absolute;top:8px;right:8px;color:#fff;cursor:pointer}.info{background-color:var(--brand-toast-info-bg-default, #BED6F1)}.info .mrx-notify-body__icon,.info .mrx-notify-body__content--title,.info .mrx-notify-body__content--text,.info .mrx-notify-body__content--close{color:var(--neutral-text-primary, #262626)}.positive{background-color:var(--system-bg-controls-positive-default, #108E3A)}.positive .mrx-notify-body__icon{color:var(--system-icon-positive, #2DA454)}.positive .mrx-notify-body__content--title,.positive .mrx-notify-body__content--text,.positive .mrx-notify-body__content--close{color:var(--neutral-text-inverse, #FFF)}.negative{background-color:var(--system-bg-controls-negative-default, #B83B15)}.negative .mrx-notify-body__icon{color:var(--system-icon-negative, #C65836)}.negative .mrx-notify-body__content--title,.negative .mrx-notify-body__content--text,.negative .mrx-notify-body__content--close{color:var(--neutral-text-inverse, #FFF)}.attention{background-color:var(--system-bg-controls-attention-default, #CC6E07)}.attention .mrx-notify-body__icon{color:var(--system-icon-attention, #D97508)}.attention .mrx-notify-body__content--title,.attention .mrx-notify-body__content--text,.attention .mrx-notify-body__content--close{color:var(--neutral-text-inverse, #FFF)}\n"], dependencies: [{ kind: "ngmodule", type: SafeModule }, { kind: "pipe", type: i1.SafePipe, name: "safe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
14
|
+
}
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotifyComponent, decorators: [{
|
|
16
|
+
type: Component,
|
|
17
|
+
args: [{ standalone: true, selector: 'app-notification', imports: [
|
|
18
|
+
SafeModule
|
|
19
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mrx-notify-body\" [class]=\"config.type\" (mouseenter)=\"pause.emit()\" (mouseleave)=\"resume.emit()\">\r\n <div class=\"mrx-notify-body__icon\">\r\n @switch (config.type) {\r\n @case (NotifyType.Positive) {\r\n <span class=\"mrx-icon icon-check color-positive icon-font-16\"></span>\r\n }\r\n @case (NotifyType.Negative) {\r\n <span class=\"mrx-icon icon-close color-negative icon-font-16\"></span>\r\n }\r\n @case (NotifyType.Attention) {\r\n <span class=\"mrx-icon icon-attention color-attention icon-font-16\"></span>\r\n }\r\n @default {\r\n <span class=\"mrx-icon icon-info color-info icon-font-16\"></span>\r\n }\r\n }\r\n </div>\r\n <div class=\"mrx-notify-body__content\">\r\n <div class=\"mrx-notify-body__content--title\">{{ config.title }}</div>\r\n\r\n @if (config.message) {\r\n @if (!config.options?.enableHtml) {\r\n <div class=\"mrx-notify-body__content--text\">{{ config.message }}</div>\r\n } @else {\r\n <div class=\"mrx-notify-body__content--text\" [innerHTML]=\"config.message | safe\"></div>\r\n }\r\n }\r\n </div>\r\n\r\n @if (config.options?.closeButton) {\r\n <span (click)=\"close.emit()\" class=\"mrx-icon icon-close icon-font-16 mrx-notify-body__close\"></span>\r\n }\r\n</div>\r\n", styles: [".mrx-notify-body{position:relative;display:flex;align-items:center;gap:var(--spacing-2, 8px);pointer-events:auto;border-radius:var(--border-radius-1, 4px);box-shadow:0 1px 4px #3a3a3a4d;width:300px;max-width:calc(100vw - 32px);min-height:56px;padding:var(--spacing-4, 16px) var(--spacing-6, 24px) var(--spacing-4, 16px) var(--spacing-4, 16px);margin:10px 0}.mrx-notify-body__icon{display:flex;align-items:center;justify-content:center;width:24px;min-width:24px;height:24px;min-height:24px;border-radius:50%;background:#fff}.mrx-notify-body__content{display:flex;flex-direction:column;gap:var(--spacing-1, 4px);width:100%}.mrx-notify-body__content--title{font-family:var(--body-md-bold-font-family, \"PT Sans\");font-size:var(--body-md-bold-font-size, 14px);font-weight:var(--body-md-bold-font-weight, 700);line-height:var(--body-md-bold-line-height, 16px)}.mrx-notify-body__content--text{font-family:var(--body-md-font-family, \"PT Sans\");font-size:var(--body-md-font-size, 14px);font-weight:var(--body-md-font-weight, 400);line-height:var(--body-md-line-height, 20px)}.mrx-notify-body__close{position:absolute;top:8px;right:8px;color:#fff;cursor:pointer}.info{background-color:var(--brand-toast-info-bg-default, #BED6F1)}.info .mrx-notify-body__icon,.info .mrx-notify-body__content--title,.info .mrx-notify-body__content--text,.info .mrx-notify-body__content--close{color:var(--neutral-text-primary, #262626)}.positive{background-color:var(--system-bg-controls-positive-default, #108E3A)}.positive .mrx-notify-body__icon{color:var(--system-icon-positive, #2DA454)}.positive .mrx-notify-body__content--title,.positive .mrx-notify-body__content--text,.positive .mrx-notify-body__content--close{color:var(--neutral-text-inverse, #FFF)}.negative{background-color:var(--system-bg-controls-negative-default, #B83B15)}.negative .mrx-notify-body__icon{color:var(--system-icon-negative, #C65836)}.negative .mrx-notify-body__content--title,.negative .mrx-notify-body__content--text,.negative .mrx-notify-body__content--close{color:var(--neutral-text-inverse, #FFF)}.attention{background-color:var(--system-bg-controls-attention-default, #CC6E07)}.attention .mrx-notify-body__icon{color:var(--system-icon-attention, #D97508)}.attention .mrx-notify-body__content--title,.attention .mrx-notify-body__content--text,.attention .mrx-notify-body__content--close{color:var(--neutral-text-inverse, #FFF)}\n"] }]
|
|
20
|
+
}] });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvc2VydmljZXMvbm90aWZ5LXNlcnZpY2UvY29tcG9uZW50cy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvc2VydmljZXMvbm90aWZ5LXNlcnZpY2UvY29tcG9uZW50cy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7OztBQVloRSxNQUFNLE9BQU8sZUFBZTtJQUNuQixNQUFNLEdBQWlCLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFekUsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUV4QixLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUNqQyxLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUNqQyxNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQzt3R0FQOUIsZUFBZTs0RkFBZixlQUFlLDRFQ2Y1QixrMENBaUNBLDg0RUR4QkksVUFBVTs7NEZBTUQsZUFBZTtrQkFWM0IsU0FBUztpQ0FDSSxJQUFJLFlBQ04sa0JBQWtCLFdBQ25CO3dCQUNQLFVBQVU7cUJBQ1gsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb3RpZnlDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvbm90aWZpY2F0aW9uLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IE5vdGlmeVR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9ub3RpZmljYXRpb24tdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNhZmVNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi9waXBlcy9zYWZlL3NhZmUubW9kdWxlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgc2VsZWN0b3I6ICdhcHAtbm90aWZpY2F0aW9uJyxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBTYWZlTW9kdWxlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ub3RpZmljYXRpb24uY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTm90aWZ5Q29tcG9uZW50IHtcclxuICBwdWJsaWMgY29uZmlnOiBOb3RpZnlDb25maWcgPSB7IHRpdGxlOiAnJywgbWVzc2FnZTogJycsIHR5cGU6IE5vdGlmeVR5cGUuSW5mbyB9O1xyXG5cclxuICBwdWJsaWMgTm90aWZ5VHlwZSA9IE5vdGlmeVR5cGU7XHJcblxyXG4gIHB1YmxpYyBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBwdWJsaWMgcGF1c2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgcHVibGljIHJlc3VtZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibXJ4LW5vdGlmeS1ib2R5XCIgW2NsYXNzXT1cImNvbmZpZy50eXBlXCIgKG1vdXNlZW50ZXIpPVwicGF1c2UuZW1pdCgpXCIgKG1vdXNlbGVhdmUpPVwicmVzdW1lLmVtaXQoKVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJtcngtbm90aWZ5LWJvZHlfX2ljb25cIj5cclxuICAgIEBzd2l0Y2ggKGNvbmZpZy50eXBlKSB7XHJcbiAgICAgIEBjYXNlIChOb3RpZnlUeXBlLlBvc2l0aXZlKSB7XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWNoZWNrIGNvbG9yLXBvc2l0aXZlIGljb24tZm9udC0xNlwiPjwvc3Bhbj5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoTm90aWZ5VHlwZS5OZWdhdGl2ZSkge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1jbG9zZSBjb2xvci1uZWdhdGl2ZSBpY29uLWZvbnQtMTZcIj48L3NwYW4+XHJcbiAgICAgIH1cclxuICAgICAgQGNhc2UgKE5vdGlmeVR5cGUuQXR0ZW50aW9uKSB7XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWF0dGVudGlvbiBjb2xvci1hdHRlbnRpb24gaWNvbi1mb250LTE2XCI+PC9zcGFuPlxyXG4gICAgICB9XHJcbiAgICAgIEBkZWZhdWx0IHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24taW5mbyBjb2xvci1pbmZvIGljb24tZm9udC0xNlwiPjwvc3Bhbj5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtcngtbm90aWZ5LWJvZHlfX2NvbnRlbnRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtcngtbm90aWZ5LWJvZHlfX2NvbnRlbnQtLXRpdGxlXCI+e3sgY29uZmlnLnRpdGxlIH19PC9kaXY+XHJcblxyXG4gICAgQGlmIChjb25maWcubWVzc2FnZSkge1xyXG4gICAgICBAaWYgKCFjb25maWcub3B0aW9ucz8uZW5hYmxlSHRtbCkge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcngtbm90aWZ5LWJvZHlfX2NvbnRlbnQtLXRleHRcIj57eyBjb25maWcubWVzc2FnZSB9fTwvZGl2PlxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LW5vdGlmeS1ib2R5X19jb250ZW50LS10ZXh0XCIgW2lubmVySFRNTF09XCJjb25maWcubWVzc2FnZSB8IHNhZmVcIj48L2Rpdj5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG5cclxuICBAaWYgKGNvbmZpZy5vcHRpb25zPy5jbG9zZUJ1dHRvbikge1xyXG4gICAgPHNwYW4gKGNsaWNrKT1cImNsb3NlLmVtaXQoKVwiIGNsYXNzPVwibXJ4LWljb24gaWNvbi1jbG9zZSBpY29uLWZvbnQtMTYgbXJ4LW5vdGlmeS1ib2R5X19jbG9zZVwiPjwvc3Bhbj5cclxuICB9XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { NotifyType } from './notification-type.enum';
|
|
2
|
+
export { NotifyPosition } from './notification-position.enum';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL3NlcnZpY2VzL25vdGlmeS1zZXJ2aWNlL2VudW1zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBOb3RpZnlUeXBlIH0gZnJvbSAnLi9ub3RpZmljYXRpb24tdHlwZS5lbnVtJztcclxuZXhwb3J0IHsgTm90aWZ5UG9zaXRpb24gfSBmcm9tICcuL25vdGlmaWNhdGlvbi1wb3NpdGlvbi5lbnVtJztcclxuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export var NotifyPosition;
|
|
2
|
+
(function (NotifyPosition) {
|
|
3
|
+
NotifyPosition["TopLeft"] = "top-left";
|
|
4
|
+
NotifyPosition["TopRight"] = "top-right";
|
|
5
|
+
NotifyPosition["BottomLeft"] = "bottom-left";
|
|
6
|
+
NotifyPosition["BottomRight"] = "bottom-right";
|
|
7
|
+
})(NotifyPosition || (NotifyPosition = {}));
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLXBvc2l0aW9uLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL3NlcnZpY2VzL25vdGlmeS1zZXJ2aWNlL2VudW1zL25vdGlmaWNhdGlvbi1wb3NpdGlvbi5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGNBS1g7QUFMRCxXQUFZLGNBQWM7SUFDeEIsc0NBQW9CLENBQUE7SUFDcEIsd0NBQXNCLENBQUE7SUFDdEIsNENBQTBCLENBQUE7SUFDMUIsOENBQTRCLENBQUE7QUFDOUIsQ0FBQyxFQUxXLGNBQWMsS0FBZCxjQUFjLFFBS3pCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gTm90aWZ5UG9zaXRpb24ge1xyXG4gIFRvcExlZnQgPSAndG9wLWxlZnQnLFxyXG4gIFRvcFJpZ2h0ID0gJ3RvcC1yaWdodCcsXHJcbiAgQm90dG9tTGVmdCA9ICdib3R0b20tbGVmdCcsXHJcbiAgQm90dG9tUmlnaHQgPSAnYm90dG9tLXJpZ2h0J1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export var NotifyType;
|
|
2
|
+
(function (NotifyType) {
|
|
3
|
+
NotifyType["Positive"] = "positive";
|
|
4
|
+
NotifyType["Negative"] = "negative";
|
|
5
|
+
NotifyType["Info"] = "info";
|
|
6
|
+
NotifyType["Attention"] = "attention";
|
|
7
|
+
})(NotifyType || (NotifyType = {}));
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLXR5cGUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvc2VydmljZXMvbm90aWZ5LXNlcnZpY2UvZW51bXMvbm90aWZpY2F0aW9uLXR5cGUuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxVQUtYO0FBTEQsV0FBWSxVQUFVO0lBQ3BCLG1DQUFxQixDQUFBO0lBQ3JCLG1DQUFxQixDQUFBO0lBQ3JCLDJCQUFhLENBQUE7SUFDYixxQ0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBTFcsVUFBVSxLQUFWLFVBQVUsUUFLckIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBOb3RpZnlUeXBlIHtcclxuICBQb3NpdGl2ZSA9ICdwb3NpdGl2ZScsXHJcbiAgTmVnYXRpdmUgPSAnbmVnYXRpdmUnLFxyXG4gIEluZm8gPSAnaW5mbycsXHJcbiAgQXR0ZW50aW9uID0gJ2F0dGVudGlvbidcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { NotificationService } from './notification.service';
|
|
2
|
+
export { NotifyComponent } from './components';
|
|
3
|
+
export { NotifyType, NotifyPosition } from './enums';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL3NlcnZpY2VzL25vdGlmeS1zZXJ2aWNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9ub3RpZmljYXRpb24uc2VydmljZSc7XHJcbmV4cG9ydCB7IE5vdGlmeUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cyc7XHJcbmV4cG9ydCB7IE5vdGlmeUNvbmZpZywgTm90aWZ5U3RhdGUgfSBmcm9tICcuL21vZGVscyc7XHJcbmV4cG9ydCB7IE5vdGlmeVR5cGUsIE5vdGlmeVBvc2l0aW9uIH0gZnJvbSAnLi9lbnVtcyc7XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL3NlcnZpY2VzL25vdGlmeS1zZXJ2aWNlL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgTm90aWZ5U3RhdGUgfSBmcm9tICcuL25vdGlmaWNhdGlvbi1zdGF0ZS5tb2RlbCc7XHJcbmV4cG9ydCB7IE5vdGlmeUNvbmZpZyB9IGZyb20gJy4vbm90aWZpY2F0aW9uLWNvbmZpZy5tb2RlbCc7XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWNvbmZpZy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvc2VydmljZXMvbm90aWZ5LXNlcnZpY2UvbW9kZWxzL25vdGlmaWNhdGlvbi1jb25maWcubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vdGlmeVR5cGUgfSBmcm9tICcuLi9lbnVtcy9ub3RpZmljYXRpb24tdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgTm90aWZ5UG9zaXRpb24gfSBmcm9tICcuLi9lbnVtcy9ub3RpZmljYXRpb24tcG9zaXRpb24uZW51bSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmeUNvbmZpZyB7XHJcbiAgaWQ/OiBudW1iZXI7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgdHlwZTogTm90aWZ5VHlwZTtcclxuICBvcHRpb25zPzoge1xyXG4gICAgY2xvc2VCdXR0b24/OmJvb2xlYW47XHJcbiAgICBlbmFibGVIdG1sPzogYm9vbGVhbjtcclxuICAgIHBvc2l0aW9uPzogTm90aWZ5UG9zaXRpb247XHJcbiAgICBkdXJhdGlvbj86IG51bWJlcjtcclxuICAgIHN0aWNreT86IGJvb2xlYW47XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLXN0YXRlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9zZXJ2aWNlcy9ub3RpZnktc2VydmljZS9tb2RlbHMvbm90aWZpY2F0aW9uLXN0YXRlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTm90aWZ5Q29uZmlnIH0gZnJvbSAnLi9ub3RpZmljYXRpb24tY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgTm90aWZ5Q29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmeVN0YXRlIHtcclxuICBpZDogbnVtYmVyO1xyXG4gIGNvbmZpZzogTm90aWZ5Q29uZmlnO1xyXG4gIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPE5vdGlmeUNvbXBvbmVudD47XHJcbiAgdGltZW91dElkPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+O1xyXG4gIHJlbWFpbmluZ1RpbWU/OiBudW1iZXI7XHJcbiAgc3RhcnRUaW1lPzogbnVtYmVyO1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { Injectable, ApplicationRef, EnvironmentInjector, inject } from '@angular/core';
|
|
2
|
+
import { signal } from '@angular/core';
|
|
3
|
+
import { createComponent } from '@angular/core';
|
|
4
|
+
import { NotifyPosition } from './enums';
|
|
5
|
+
import { NotifyComponent } from './components';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class NotificationService {
|
|
8
|
+
_appRef = inject(ApplicationRef);
|
|
9
|
+
_environmentInjector = inject(EnvironmentInjector);
|
|
10
|
+
_defaultDuration = 5000;
|
|
11
|
+
_defaultPosition = NotifyPosition.BottomRight;
|
|
12
|
+
_defaultSticky = false;
|
|
13
|
+
_defaultCloseButton = true;
|
|
14
|
+
_defaultEnableHtml = false;
|
|
15
|
+
_defaultNotificationComponent = NotifyComponent;
|
|
16
|
+
_animationDuration = 300;
|
|
17
|
+
_notificationId = 0;
|
|
18
|
+
notifications = signal([]);
|
|
19
|
+
show(config, component) {
|
|
20
|
+
const notificationId = this._notificationId++;
|
|
21
|
+
const notificationConfig = {
|
|
22
|
+
...config,
|
|
23
|
+
id: notificationId,
|
|
24
|
+
options: {
|
|
25
|
+
position: config.options?.position || this._defaultPosition,
|
|
26
|
+
duration: config.options?.duration || this._defaultDuration,
|
|
27
|
+
sticky: config.options?.sticky || this._defaultSticky,
|
|
28
|
+
closeButton: config.options?.closeButton || this._defaultCloseButton,
|
|
29
|
+
enableHtml: config.options?.enableHtml || this._defaultEnableHtml
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
const componentRef = this._createNotificationComponent(notificationConfig, component || this._defaultNotificationComponent);
|
|
33
|
+
const notificationState = {
|
|
34
|
+
id: notificationId,
|
|
35
|
+
config: notificationConfig,
|
|
36
|
+
componentRef,
|
|
37
|
+
remainingTime: notificationConfig.options?.duration,
|
|
38
|
+
startTime: notificationConfig.options?.sticky ? undefined : Date.now()
|
|
39
|
+
};
|
|
40
|
+
componentRef.instance.close.subscribe(() => this.remove(notificationId));
|
|
41
|
+
componentRef.instance.pause.subscribe(() => this._pauseNotification(notificationState));
|
|
42
|
+
componentRef.instance.resume.subscribe(() => this._resumeNotification(notificationState));
|
|
43
|
+
this.notifications.update(notifications => [
|
|
44
|
+
...notifications,
|
|
45
|
+
notificationState
|
|
46
|
+
]);
|
|
47
|
+
if (!notificationConfig.options?.sticky) {
|
|
48
|
+
notificationState.timeoutId = setTimeout(() => this.remove(notificationId), notificationConfig.options?.duration);
|
|
49
|
+
}
|
|
50
|
+
return notificationId;
|
|
51
|
+
}
|
|
52
|
+
remove(id) {
|
|
53
|
+
const notification = this.notifications().find(n => n.id === id);
|
|
54
|
+
if (notification) {
|
|
55
|
+
if (notification.timeoutId) {
|
|
56
|
+
clearTimeout(notification.timeoutId);
|
|
57
|
+
}
|
|
58
|
+
this._removeNotification(notification.componentRef);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
_createNotificationComponent(config, component) {
|
|
62
|
+
const componentRef = createComponent(component, {
|
|
63
|
+
environmentInjector: this._environmentInjector
|
|
64
|
+
});
|
|
65
|
+
componentRef.instance.config = config;
|
|
66
|
+
this._appRef.attachView(componentRef.hostView);
|
|
67
|
+
const domElem = componentRef.hostView.rootNodes[0];
|
|
68
|
+
const positionContainer = this._getOrCreatePositionContainer(config.options?.position || this._defaultPosition);
|
|
69
|
+
domElem.classList.add('mrx-notify-item');
|
|
70
|
+
positionContainer.appendChild(domElem);
|
|
71
|
+
setTimeout(() => domElem.classList.add('appearing'), 10);
|
|
72
|
+
return componentRef;
|
|
73
|
+
}
|
|
74
|
+
_removeNotification(componentRef) {
|
|
75
|
+
const domElem = componentRef.hostView.rootNodes[0];
|
|
76
|
+
domElem.classList.add('removing');
|
|
77
|
+
setTimeout(() => {
|
|
78
|
+
this._appRef.detachView(componentRef.hostView);
|
|
79
|
+
componentRef.destroy();
|
|
80
|
+
this.notifications.update(notifications => notifications.filter(n => n.componentRef !== componentRef));
|
|
81
|
+
setTimeout(() => {
|
|
82
|
+
this._cleanupEmptyContainers();
|
|
83
|
+
});
|
|
84
|
+
}, this._animationDuration);
|
|
85
|
+
}
|
|
86
|
+
_pauseNotification(state) {
|
|
87
|
+
if (state.timeoutId && state.remainingTime !== undefined && state.startTime !== undefined) {
|
|
88
|
+
clearTimeout(state.timeoutId);
|
|
89
|
+
state.timeoutId = undefined;
|
|
90
|
+
state.remainingTime = state.config.options?.duration - (Date.now() - state.startTime);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
_resumeNotification(state) {
|
|
94
|
+
if (!state.config.options?.sticky && state.remainingTime !== undefined && !state.timeoutId) {
|
|
95
|
+
state.timeoutId = setTimeout(() => this.remove(state.id), state.remainingTime);
|
|
96
|
+
state.startTime = Date.now();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
_getOrCreatePositionContainer(position) {
|
|
100
|
+
let container = document.querySelector(`.mrx-notify-container.${position}`);
|
|
101
|
+
if (!container) {
|
|
102
|
+
container = document.createElement('div');
|
|
103
|
+
container.classList.add('mrx-notify-container', position);
|
|
104
|
+
document.body.appendChild(container);
|
|
105
|
+
}
|
|
106
|
+
return container;
|
|
107
|
+
}
|
|
108
|
+
_cleanupEmptyContainers() {
|
|
109
|
+
const containers = document.querySelectorAll('.mrx-notify-container');
|
|
110
|
+
containers.forEach(container => {
|
|
111
|
+
if (container.children.length === 0) {
|
|
112
|
+
container.remove();
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
117
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotificationService, providedIn: 'root' });
|
|
118
|
+
}
|
|
119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotificationService, decorators: [{
|
|
120
|
+
type: Injectable,
|
|
121
|
+
args: [{
|
|
122
|
+
providedIn: 'root'
|
|
123
|
+
}]
|
|
124
|
+
}] });
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL3NlcnZpY2VzL25vdGlmeS1zZXJ2aWNlL25vdGlmaWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWdCLGNBQWMsRUFBRSxtQkFBbUIsRUFBUSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFLL0MsTUFBTSxPQUFPLG1CQUFtQjtJQUNiLE9BQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDakMsb0JBQW9CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFFbkQsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxXQUFXLENBQUM7SUFDOUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUN2QixtQkFBbUIsR0FBRyxJQUFJLENBQUM7SUFDM0Isa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBQzNCLDZCQUE2QixHQUEwQixlQUFlLENBQUM7SUFDdkUsa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0lBRWxDLGVBQWUsR0FBRyxDQUFDLENBQUM7SUFFckIsYUFBYSxHQUFHLE1BQU0sQ0FBZ0IsRUFBRSxDQUFDLENBQUM7SUFFMUMsSUFBSSxDQUFDLE1BQW9CLEVBQUUsU0FBaUM7UUFDakUsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzlDLE1BQU0s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RUFBRSxDQUFDO1lBQ2YsU0FBUyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDMUQsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUNELE9BQU8sU0FBd0IsQ0FBQztJQUNsQyxDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRXRFLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3JCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBeElVLG1CQUFtQjs0R0FBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBDb21wb25lbnRSZWYsIEFwcGxpY2F0aW9uUmVmLCBFbnZpcm9ubWVudEluamVjdG9yLCBUeXBlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNyZWF0ZUNvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOb3RpZnlQb3NpdGlvbiB9IGZyb20gJy4vZW51bXMnO1xyXG5pbXBvcnQgeyBOb3RpZnlDb25maWcsIE5vdGlmeVN0YXRlIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBOb3RpZnlDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uU2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwUmVmID0gaW5qZWN0KEFwcGxpY2F0aW9uUmVmKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9lbnZpcm9ubWVudEluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZWZhdWx0RHVyYXRpb24gPSA1MDAwO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlZmF1bHRQb3NpdGlvbiA9IE5vdGlmeVBvc2l0aW9uLkJvdHRvbVJpZ2h0O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlZmF1bHRTdGlja3kgPSBmYWxzZTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZWZhdWx0Q2xvc2VCdXR0b24gPSB0cnVlO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlZmF1bHRFbmFibGVIdG1sID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVmYXVsdE5vdGlmaWNhdGlvbkNvbXBvbmVudDogVHlwZTxOb3RpZnlDb21wb25lbnQ+ID0gTm90aWZ5Q29tcG9uZW50O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FuaW1hdGlvbkR1cmF0aW9uID0gMzAwO1xyXG5cclxuICBwcml2YXRlIF9ub3RpZmljYXRpb25JZCA9IDA7XHJcblxyXG4gIHB1YmxpYyBub3RpZmljYXRpb25zID0gc2lnbmFsPE5vdGlmeVN0YXRlW10+KFtdKTtcclxuXHJcbiAgcHVibGljIHNob3coY29uZmlnOiBOb3RpZnlDb25maWcsIGNvbXBvbmVudD86IFR5cGU8Tm90aWZ5Q29tcG9uZW50Pik6IG51bWJlciB7XHJcbiAgICBjb25zdCBub3RpZmljYXRpb25JZCA9IHRoaXMuX25vdGlmaWNhdGlvbklkKys7XHJcbiAgICBjb25zdCBub3RpZmljYXRpb25Db25maWc6IE5vdGlmeUNvbmZpZyA9IHtcclxuICAgICAgLi4uY29uZmlnLFxyXG4gICAgICBpZDogbm90aWZpY2F0aW9uSWQsXHJcbiAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICBwb3NpdGlvbjogY29uZmlnLm9wdGlvbnM/LnBvc2l0aW9uIHx8IHRoaXMuX2RlZmF1bHRQb3NpdGlvbixcclxuICAgICAgICBkdXJhdGlvbjogY29uZmlnLm9wdGlvbnM/LmR1cmF0aW9uIHx8IHRoaXMuX2RlZmF1bHREdXJhdGlvbixcclxuICAgICAgICBzdGlja3k6IGNvbmZpZy5vcHRpb25zPy5zdGlja3kgfHwgdGhpcy5fZGVmYXVsdFN0aWNreSxcclxuICAgICAgICBjbG9zZUJ1dHRvbjogY29uZmlnLm9wdGlvbnM/LmNsb3NlQnV0dG9uIHx8IHRoaXMuX2RlZmF1bHRDbG9zZUJ1dHRvbixcclxuICAgICAgICBlbmFibGVIdG1sOiBjb25maWcub3B0aW9ucz8uZW5hYmxlSHRtbCB8fCB0aGlzLl9kZWZhdWx0RW5hYmxlSHRtbFxyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuX2NyZWF0ZU5vdGlmaWNhdGlvbkNvbXBvbmVudChub3RpZmljYXRpb25Db25maWcsIGNvbXBvbmVudCB8fCB0aGlzLl9kZWZhdWx0Tm90aWZpY2F0aW9uQ29tcG9uZW50KTtcclxuXHJcbiAgICBjb25zdCBub3RpZmljYXRpb25TdGF0ZTogTm90aWZ5U3RhdGUgPSB7XHJcbiAgICAgIGlkOiBub3RpZmljYXRpb25JZCxcclxuICAgICAgY29uZmlnOiBub3RpZmljYXRpb25Db25maWcsXHJcbiAgICAgIGNvbXBvbmVudFJlZixcclxuICAgICAgcmVtYWluaW5nVGltZTogbm90aWZpY2F0aW9uQ29uZmlnLm9wdGlvbnM/LmR1cmF0aW9uLFxyXG4gICAgICBzdGFydFRpbWU6IG5vdGlmaWNhdGlvbkNvbmZpZy5vcHRpb25zPy5zdGlja3kgPyB1bmRlZmluZWQgOiBEYXRlLm5vdygpXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5jbG9zZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZW1vdmUobm90aWZpY2F0aW9uSWQpKTtcclxuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5wYXVzZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fcGF1c2VOb3RpZmljYXRpb24obm90aWZpY2F0aW9uU3RhdGUpKTtcclxuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5yZXN1bWUuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3Jlc3VtZU5vdGlmaWNhdGlvbihub3RpZmljYXRpb25TdGF0ZSkpO1xyXG5cclxuICAgIHRoaXMubm90aWZpY2F0aW9ucy51cGRhdGUobm90aWZpY2F0aW9ucyA9PiBbXHJcbiAgICAgIC4uLm5vdGlmaWNhdGlvbnMsXHJcbiAgICAgIG5vdGlmaWNhdGlvblN0YXRlXHJcbiAgICBdKTtcclxuXHJcbiAgICBpZiAoIW5vdGlmaWNhdGlvbkNvbmZpZy5vcHRpb25zPy5zdGlja3kpIHtcclxuICAgICAgbm90aWZpY2F0aW9uU3RhdGUudGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlbW92ZShub3RpZmljYXRpb25JZCksIG5vdGlmaWNhdGlvbkNvbmZpZy5vcHRpb25zPy5kdXJhdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5vdGlmaWNhdGlvbklkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZShpZDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBub3RpZmljYXRpb24gPSB0aGlzLm5vdGlmaWNhdGlvbnMoKS5maW5kKG4gPT4gbi5pZCA9PT0gaWQpO1xyXG4gICAgaWYgKG5vdGlmaWNhdGlvbikge1xyXG4gICAgICBpZiAobm90aWZpY2F0aW9uLnRpbWVvdXRJZCkge1xyXG4gICAgICAgIGNsZWFyVGltZW91dChub3RpZmljYXRpb24udGltZW91dElkKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9yZW1vdmVOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLmNvbXBvbmVudFJlZik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVOb3RpZmljYXRpb25Db21wb25lbnQoY29uZmlnOiBOb3RpZnlDb25maWcsIGNvbXBvbmVudDogVHlwZTxOb3RpZnlDb21wb25lbnQ+KTogQ29tcG9uZW50UmVmPE5vdGlmeUNvbXBvbmVudD4ge1xyXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCwge1xyXG4gICAgICBlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLl9lbnZpcm9ubWVudEluamVjdG9yXHJcbiAgICB9KTtcclxuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5jb25maWcgPSBjb25maWc7XHJcblxyXG4gICAgdGhpcy5fYXBwUmVmLmF0dGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcclxuXHJcbiAgICBjb25zdCBkb21FbGVtID0gKGNvbXBvbmVudFJlZi5ob3N0VmlldyBhcyBhbnkpLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IHBvc2l0aW9uQ29udGFpbmVyID0gdGhpcy5fZ2V0T3JDcmVhdGVQb3NpdGlvbkNvbnRhaW5lcihjb25maWcub3B0aW9ucz8ucG9zaXRpb24gfHwgdGhpcy5fZGVmYXVsdFBvc2l0aW9uKTtcclxuICAgIGRvbUVsZW0uY2xhc3NMaXN0LmFkZCgnbXJ4LW5vdGlmeS1pdGVtJyk7XHJcbiAgICBwb3NpdGlvbkNvbnRhaW5lci5hcHBlbmRDaGlsZChkb21FbGVtKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IGRvbUVsZW0uY2xhc3NMaXN0LmFkZCgnYXBwZWFyaW5nJyksIDEwKTtcclxuXHJcbiAgICByZXR1cm4gY29tcG9uZW50UmVmO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVtb3ZlTm90aWZpY2F0aW9uKGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPE5vdGlmeUNvbXBvbmVudD4pOiB2b2lkIHtcclxuICAgIGNvbnN0IGRvbUVsZW0gPSAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIGFueSkucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgIGRvbUVsZW0uY2xhc3NMaXN0LmFkZCgncmVtb3ZpbmcnKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5fYXBwUmVmLmRldGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcclxuICAgICAgY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcclxuXHJcbiAgICAgIHRoaXMubm90aWZpY2F0aW9ucy51cGRhdGUobm90aWZpY2F0aW9ucyA9PlxyXG4gICAgICAgIG5vdGlmaWNhdGlvbnMuZmlsdGVyKG4gPT4gbi5jb21wb25lbnRSZWYgIT09IGNvbXBvbmVudFJlZilcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX2NsZWFudXBFbXB0eUNvbnRhaW5lcnMoKTtcclxuICAgICAgfSlcclxuICAgIH0sIHRoaXMuX2FuaW1hdGlvbkR1cmF0aW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3BhdXNlTm90aWZpY2F0aW9uKHN0YXRlOiBOb3RpZnlTdGF0ZSk6IHZvaWQge1xyXG4gICAgaWYgKHN0YXRlLnRpbWVvdXRJZCAmJiBzdGF0ZS5yZW1haW5pbmdUaW1lICE9PSB1bmRlZmluZWQgJiYgc3RhdGUuc3RhcnRUaW1lICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHN0YXRlLnRpbWVvdXRJZCk7XHJcbiAgICAgIHN0YXRlLnRpbWVvdXRJZCA9IHVuZGVmaW5lZDtcclxuICAgICAgc3RhdGUucmVtYWluaW5nVGltZSA9IHN0YXRlLmNvbmZpZy5vcHRpb25zPy5kdXJhdGlvbiEgLSAoRGF0ZS5ub3coKSAtIHN0YXRlLnN0YXJ0VGltZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZXN1bWVOb3RpZmljYXRpb24oc3RhdGU6IE5vdGlmeVN0YXRlKTogdm9pZCB7XHJcbiAgICBpZiAoIXN0YXRlLmNvbmZpZy5vcHRpb25zPy5zdGlja3kgJiYgc3RhdGUucmVtYWluaW5nVGltZSAhPT0gdW5kZWZpbmVkICYmICFzdGF0ZS50aW1lb3V0SWQpIHtcclxuICAgICAgc3RhdGUudGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlbW92ZShzdGF0ZS5pZCksIHN0YXRlLnJlbWFpbmluZ1RpbWUpO1xyXG4gICAgICBzdGF0ZS5zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0T3JDcmVhdGVQb3NpdGlvbkNvbnRhaW5lcihwb3NpdGlvbjogTm90aWZ5UG9zaXRpb24pOiBIVE1MRWxlbWVudCB7XHJcbiAgICBsZXQgY29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLm1yeC1ub3RpZnktY29udGFpbmVyLiR7cG9zaXRpb259YCk7XHJcbiAgICBpZiAoIWNvbnRhaW5lcikge1xyXG4gICAgICBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ21yeC1ub3RpZnktY29udGFpbmVyJywgcG9zaXRpb24pO1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29udGFpbmVyIGFzIEhUTUxFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xlYW51cEVtcHR5Q29udGFpbmVycygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lcnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubXJ4LW5vdGlmeS1jb250YWluZXInKTtcclxuXHJcbiAgICBjb250YWluZXJzLmZvckVhY2goY29udGFpbmVyID0+IHtcclxuICAgICAgaWYgKGNvbnRhaW5lci5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcclxuICAgICAgICBjb250YWluZXIucmVtb3ZlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
package/fesm2022/myrta-ui.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Input, Component, Pipe, EventEmitter, Output, ChangeDetectionStrategy, NgModule, CUSTOM_ELEMENTS_SCHEMA, Injectable, forwardRef, InjectionToken, TemplateRef, Inject, Injector, HostListener, Directive, ViewChild, ContentChild, ContentChildren, signal, computed,
|
|
2
|
+
import { Input, Component, Pipe, EventEmitter, Output, ChangeDetectionStrategy, NgModule, CUSTOM_ELEMENTS_SCHEMA, Injectable, forwardRef, InjectionToken, TemplateRef, Inject, Injector, HostListener, Directive, ViewChild, ContentChild, ContentChildren, signal, computed, inject, ApplicationRef, EnvironmentInjector, createComponent, HostBinding, ViewEncapsulation, ViewChildren, viewChild, LOCALE_ID } from '@angular/core';
|
|
3
3
|
import * as i1$1 from '@angular/common';
|
|
4
4
|
import { CommonModule, NgOptimizedImage, DOCUMENT, registerLocaleData, DatePipe } from '@angular/common';
|
|
5
5
|
import * as i1$2 from '@angular/router';
|
|
@@ -3603,6 +3603,157 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
3603
3603
|
}]
|
|
3604
3604
|
}] });
|
|
3605
3605
|
|
|
3606
|
+
var NotifyType;
|
|
3607
|
+
(function (NotifyType) {
|
|
3608
|
+
NotifyType["Positive"] = "positive";
|
|
3609
|
+
NotifyType["Negative"] = "negative";
|
|
3610
|
+
NotifyType["Info"] = "info";
|
|
3611
|
+
NotifyType["Attention"] = "attention";
|
|
3612
|
+
})(NotifyType || (NotifyType = {}));
|
|
3613
|
+
|
|
3614
|
+
var NotifyPosition;
|
|
3615
|
+
(function (NotifyPosition) {
|
|
3616
|
+
NotifyPosition["TopLeft"] = "top-left";
|
|
3617
|
+
NotifyPosition["TopRight"] = "top-right";
|
|
3618
|
+
NotifyPosition["BottomLeft"] = "bottom-left";
|
|
3619
|
+
NotifyPosition["BottomRight"] = "bottom-right";
|
|
3620
|
+
})(NotifyPosition || (NotifyPosition = {}));
|
|
3621
|
+
|
|
3622
|
+
class NotifyComponent {
|
|
3623
|
+
config = { title: '', message: '', type: NotifyType.Info };
|
|
3624
|
+
NotifyType = NotifyType;
|
|
3625
|
+
close = new EventEmitter();
|
|
3626
|
+
pause = new EventEmitter();
|
|
3627
|
+
resume = new EventEmitter();
|
|
3628
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotifyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3629
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: NotifyComponent, isStandalone: true, selector: "app-notification", ngImport: i0, template: "<div class=\"mrx-notify-body\" [class]=\"config.type\" (mouseenter)=\"pause.emit()\" (mouseleave)=\"resume.emit()\">\r\n <div class=\"mrx-notify-body__icon\">\r\n @switch (config.type) {\r\n @case (NotifyType.Positive) {\r\n <span class=\"mrx-icon icon-check color-positive icon-font-16\"></span>\r\n }\r\n @case (NotifyType.Negative) {\r\n <span class=\"mrx-icon icon-close color-negative icon-font-16\"></span>\r\n }\r\n @case (NotifyType.Attention) {\r\n <span class=\"mrx-icon icon-attention color-attention icon-font-16\"></span>\r\n }\r\n @default {\r\n <span class=\"mrx-icon icon-info color-info icon-font-16\"></span>\r\n }\r\n }\r\n </div>\r\n <div class=\"mrx-notify-body__content\">\r\n <div class=\"mrx-notify-body__content--title\">{{ config.title }}</div>\r\n\r\n @if (config.message) {\r\n @if (!config.options?.enableHtml) {\r\n <div class=\"mrx-notify-body__content--text\">{{ config.message }}</div>\r\n } @else {\r\n <div class=\"mrx-notify-body__content--text\" [innerHTML]=\"config.message | safe\"></div>\r\n }\r\n }\r\n </div>\r\n\r\n @if (config.options?.closeButton) {\r\n <span (click)=\"close.emit()\" class=\"mrx-icon icon-close icon-font-16 mrx-notify-body__close\"></span>\r\n }\r\n</div>\r\n", styles: [".mrx-notify-body{position:relative;display:flex;align-items:center;gap:var(--spacing-2, 8px);pointer-events:auto;border-radius:var(--border-radius-1, 4px);box-shadow:0 1px 4px #3a3a3a4d;width:300px;max-width:calc(100vw - 32px);min-height:56px;padding:var(--spacing-4, 16px) var(--spacing-6, 24px) var(--spacing-4, 16px) var(--spacing-4, 16px);margin:10px 0}.mrx-notify-body__icon{display:flex;align-items:center;justify-content:center;width:24px;min-width:24px;height:24px;min-height:24px;border-radius:50%;background:#fff}.mrx-notify-body__content{display:flex;flex-direction:column;gap:var(--spacing-1, 4px);width:100%}.mrx-notify-body__content--title{font-family:var(--body-md-bold-font-family, \"PT Sans\");font-size:var(--body-md-bold-font-size, 14px);font-weight:var(--body-md-bold-font-weight, 700);line-height:var(--body-md-bold-line-height, 16px)}.mrx-notify-body__content--text{font-family:var(--body-md-font-family, \"PT Sans\");font-size:var(--body-md-font-size, 14px);font-weight:var(--body-md-font-weight, 400);line-height:var(--body-md-line-height, 20px)}.mrx-notify-body__close{position:absolute;top:8px;right:8px;color:#fff;cursor:pointer}.info{background-color:var(--brand-toast-info-bg-default, #BED6F1)}.info .mrx-notify-body__icon,.info .mrx-notify-body__content--title,.info .mrx-notify-body__content--text,.info .mrx-notify-body__content--close{color:var(--neutral-text-primary, #262626)}.positive{background-color:var(--system-bg-controls-positive-default, #108E3A)}.positive .mrx-notify-body__icon{color:var(--system-icon-positive, #2DA454)}.positive .mrx-notify-body__content--title,.positive .mrx-notify-body__content--text,.positive .mrx-notify-body__content--close{color:var(--neutral-text-inverse, #FFF)}.negative{background-color:var(--system-bg-controls-negative-default, #B83B15)}.negative .mrx-notify-body__icon{color:var(--system-icon-negative, #C65836)}.negative .mrx-notify-body__content--title,.negative .mrx-notify-body__content--text,.negative .mrx-notify-body__content--close{color:var(--neutral-text-inverse, #FFF)}.attention{background-color:var(--system-bg-controls-attention-default, #CC6E07)}.attention .mrx-notify-body__icon{color:var(--system-icon-attention, #D97508)}.attention .mrx-notify-body__content--title,.attention .mrx-notify-body__content--text,.attention .mrx-notify-body__content--close{color:var(--neutral-text-inverse, #FFF)}\n"], dependencies: [{ kind: "ngmodule", type: SafeModule }, { kind: "pipe", type: SafePipe, name: "safe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3630
|
+
}
|
|
3631
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotifyComponent, decorators: [{
|
|
3632
|
+
type: Component,
|
|
3633
|
+
args: [{ standalone: true, selector: 'app-notification', imports: [
|
|
3634
|
+
SafeModule
|
|
3635
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mrx-notify-body\" [class]=\"config.type\" (mouseenter)=\"pause.emit()\" (mouseleave)=\"resume.emit()\">\r\n <div class=\"mrx-notify-body__icon\">\r\n @switch (config.type) {\r\n @case (NotifyType.Positive) {\r\n <span class=\"mrx-icon icon-check color-positive icon-font-16\"></span>\r\n }\r\n @case (NotifyType.Negative) {\r\n <span class=\"mrx-icon icon-close color-negative icon-font-16\"></span>\r\n }\r\n @case (NotifyType.Attention) {\r\n <span class=\"mrx-icon icon-attention color-attention icon-font-16\"></span>\r\n }\r\n @default {\r\n <span class=\"mrx-icon icon-info color-info icon-font-16\"></span>\r\n }\r\n }\r\n </div>\r\n <div class=\"mrx-notify-body__content\">\r\n <div class=\"mrx-notify-body__content--title\">{{ config.title }}</div>\r\n\r\n @if (config.message) {\r\n @if (!config.options?.enableHtml) {\r\n <div class=\"mrx-notify-body__content--text\">{{ config.message }}</div>\r\n } @else {\r\n <div class=\"mrx-notify-body__content--text\" [innerHTML]=\"config.message | safe\"></div>\r\n }\r\n }\r\n </div>\r\n\r\n @if (config.options?.closeButton) {\r\n <span (click)=\"close.emit()\" class=\"mrx-icon icon-close icon-font-16 mrx-notify-body__close\"></span>\r\n }\r\n</div>\r\n", styles: [".mrx-notify-body{position:relative;display:flex;align-items:center;gap:var(--spacing-2, 8px);pointer-events:auto;border-radius:var(--border-radius-1, 4px);box-shadow:0 1px 4px #3a3a3a4d;width:300px;max-width:calc(100vw - 32px);min-height:56px;padding:var(--spacing-4, 16px) var(--spacing-6, 24px) var(--spacing-4, 16px) var(--spacing-4, 16px);margin:10px 0}.mrx-notify-body__icon{display:flex;align-items:center;justify-content:center;width:24px;min-width:24px;height:24px;min-height:24px;border-radius:50%;background:#fff}.mrx-notify-body__content{display:flex;flex-direction:column;gap:var(--spacing-1, 4px);width:100%}.mrx-notify-body__content--title{font-family:var(--body-md-bold-font-family, \"PT Sans\");font-size:var(--body-md-bold-font-size, 14px);font-weight:var(--body-md-bold-font-weight, 700);line-height:var(--body-md-bold-line-height, 16px)}.mrx-notify-body__content--text{font-family:var(--body-md-font-family, \"PT Sans\");font-size:var(--body-md-font-size, 14px);font-weight:var(--body-md-font-weight, 400);line-height:var(--body-md-line-height, 20px)}.mrx-notify-body__close{position:absolute;top:8px;right:8px;color:#fff;cursor:pointer}.info{background-color:var(--brand-toast-info-bg-default, #BED6F1)}.info .mrx-notify-body__icon,.info .mrx-notify-body__content--title,.info .mrx-notify-body__content--text,.info .mrx-notify-body__content--close{color:var(--neutral-text-primary, #262626)}.positive{background-color:var(--system-bg-controls-positive-default, #108E3A)}.positive .mrx-notify-body__icon{color:var(--system-icon-positive, #2DA454)}.positive .mrx-notify-body__content--title,.positive .mrx-notify-body__content--text,.positive .mrx-notify-body__content--close{color:var(--neutral-text-inverse, #FFF)}.negative{background-color:var(--system-bg-controls-negative-default, #B83B15)}.negative .mrx-notify-body__icon{color:var(--system-icon-negative, #C65836)}.negative .mrx-notify-body__content--title,.negative .mrx-notify-body__content--text,.negative .mrx-notify-body__content--close{color:var(--neutral-text-inverse, #FFF)}.attention{background-color:var(--system-bg-controls-attention-default, #CC6E07)}.attention .mrx-notify-body__icon{color:var(--system-icon-attention, #D97508)}.attention .mrx-notify-body__content--title,.attention .mrx-notify-body__content--text,.attention .mrx-notify-body__content--close{color:var(--neutral-text-inverse, #FFF)}\n"] }]
|
|
3636
|
+
}] });
|
|
3637
|
+
|
|
3638
|
+
class NotificationService {
|
|
3639
|
+
_appRef = inject(ApplicationRef);
|
|
3640
|
+
_environmentInjector = inject(EnvironmentInjector);
|
|
3641
|
+
_defaultDuration = 5000;
|
|
3642
|
+
_defaultPosition = NotifyPosition.BottomRight;
|
|
3643
|
+
_defaultSticky = false;
|
|
3644
|
+
_defaultCloseButton = true;
|
|
3645
|
+
_defaultEnableHtml = false;
|
|
3646
|
+
_defaultNotificationComponent = NotifyComponent;
|
|
3647
|
+
_animationDuration = 300;
|
|
3648
|
+
_notificationId = 0;
|
|
3649
|
+
notifications = signal([]);
|
|
3650
|
+
show(config, component) {
|
|
3651
|
+
const notificationId = this._notificationId++;
|
|
3652
|
+
const notificationConfig = {
|
|
3653
|
+
...config,
|
|
3654
|
+
id: notificationId,
|
|
3655
|
+
options: {
|
|
3656
|
+
position: config.options?.position || this._defaultPosition,
|
|
3657
|
+
duration: config.options?.duration || this._defaultDuration,
|
|
3658
|
+
sticky: config.options?.sticky || this._defaultSticky,
|
|
3659
|
+
closeButton: config.options?.closeButton || this._defaultCloseButton,
|
|
3660
|
+
enableHtml: config.options?.enableHtml || this._defaultEnableHtml
|
|
3661
|
+
}
|
|
3662
|
+
};
|
|
3663
|
+
const componentRef = this._createNotificationComponent(notificationConfig, component || this._defaultNotificationComponent);
|
|
3664
|
+
const notificationState = {
|
|
3665
|
+
id: notificationId,
|
|
3666
|
+
config: notificationConfig,
|
|
3667
|
+
componentRef,
|
|
3668
|
+
remainingTime: notificationConfig.options?.duration,
|
|
3669
|
+
startTime: notificationConfig.options?.sticky ? undefined : Date.now()
|
|
3670
|
+
};
|
|
3671
|
+
componentRef.instance.close.subscribe(() => this.remove(notificationId));
|
|
3672
|
+
componentRef.instance.pause.subscribe(() => this._pauseNotification(notificationState));
|
|
3673
|
+
componentRef.instance.resume.subscribe(() => this._resumeNotification(notificationState));
|
|
3674
|
+
this.notifications.update(notifications => [
|
|
3675
|
+
...notifications,
|
|
3676
|
+
notificationState
|
|
3677
|
+
]);
|
|
3678
|
+
if (!notificationConfig.options?.sticky) {
|
|
3679
|
+
notificationState.timeoutId = setTimeout(() => this.remove(notificationId), notificationConfig.options?.duration);
|
|
3680
|
+
}
|
|
3681
|
+
return notificationId;
|
|
3682
|
+
}
|
|
3683
|
+
remove(id) {
|
|
3684
|
+
const notification = this.notifications().find(n => n.id === id);
|
|
3685
|
+
if (notification) {
|
|
3686
|
+
if (notification.timeoutId) {
|
|
3687
|
+
clearTimeout(notification.timeoutId);
|
|
3688
|
+
}
|
|
3689
|
+
this._removeNotification(notification.componentRef);
|
|
3690
|
+
}
|
|
3691
|
+
}
|
|
3692
|
+
_createNotificationComponent(config, component) {
|
|
3693
|
+
const componentRef = createComponent(component, {
|
|
3694
|
+
environmentInjector: this._environmentInjector
|
|
3695
|
+
});
|
|
3696
|
+
componentRef.instance.config = config;
|
|
3697
|
+
this._appRef.attachView(componentRef.hostView);
|
|
3698
|
+
const domElem = componentRef.hostView.rootNodes[0];
|
|
3699
|
+
const positionContainer = this._getOrCreatePositionContainer(config.options?.position || this._defaultPosition);
|
|
3700
|
+
domElem.classList.add('mrx-notify-item');
|
|
3701
|
+
positionContainer.appendChild(domElem);
|
|
3702
|
+
setTimeout(() => domElem.classList.add('appearing'), 10);
|
|
3703
|
+
return componentRef;
|
|
3704
|
+
}
|
|
3705
|
+
_removeNotification(componentRef) {
|
|
3706
|
+
const domElem = componentRef.hostView.rootNodes[0];
|
|
3707
|
+
domElem.classList.add('removing');
|
|
3708
|
+
setTimeout(() => {
|
|
3709
|
+
this._appRef.detachView(componentRef.hostView);
|
|
3710
|
+
componentRef.destroy();
|
|
3711
|
+
this.notifications.update(notifications => notifications.filter(n => n.componentRef !== componentRef));
|
|
3712
|
+
setTimeout(() => {
|
|
3713
|
+
this._cleanupEmptyContainers();
|
|
3714
|
+
});
|
|
3715
|
+
}, this._animationDuration);
|
|
3716
|
+
}
|
|
3717
|
+
_pauseNotification(state) {
|
|
3718
|
+
if (state.timeoutId && state.remainingTime !== undefined && state.startTime !== undefined) {
|
|
3719
|
+
clearTimeout(state.timeoutId);
|
|
3720
|
+
state.timeoutId = undefined;
|
|
3721
|
+
state.remainingTime = state.config.options?.duration - (Date.now() - state.startTime);
|
|
3722
|
+
}
|
|
3723
|
+
}
|
|
3724
|
+
_resumeNotification(state) {
|
|
3725
|
+
if (!state.config.options?.sticky && state.remainingTime !== undefined && !state.timeoutId) {
|
|
3726
|
+
state.timeoutId = setTimeout(() => this.remove(state.id), state.remainingTime);
|
|
3727
|
+
state.startTime = Date.now();
|
|
3728
|
+
}
|
|
3729
|
+
}
|
|
3730
|
+
_getOrCreatePositionContainer(position) {
|
|
3731
|
+
let container = document.querySelector(`.mrx-notify-container.${position}`);
|
|
3732
|
+
if (!container) {
|
|
3733
|
+
container = document.createElement('div');
|
|
3734
|
+
container.classList.add('mrx-notify-container', position);
|
|
3735
|
+
document.body.appendChild(container);
|
|
3736
|
+
}
|
|
3737
|
+
return container;
|
|
3738
|
+
}
|
|
3739
|
+
_cleanupEmptyContainers() {
|
|
3740
|
+
const containers = document.querySelectorAll('.mrx-notify-container');
|
|
3741
|
+
containers.forEach(container => {
|
|
3742
|
+
if (container.children.length === 0) {
|
|
3743
|
+
container.remove();
|
|
3744
|
+
}
|
|
3745
|
+
});
|
|
3746
|
+
}
|
|
3747
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3748
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotificationService, providedIn: 'root' });
|
|
3749
|
+
}
|
|
3750
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotificationService, decorators: [{
|
|
3751
|
+
type: Injectable,
|
|
3752
|
+
args: [{
|
|
3753
|
+
providedIn: 'root'
|
|
3754
|
+
}]
|
|
3755
|
+
}] });
|
|
3756
|
+
|
|
3606
3757
|
var InputTextSizesEnum;
|
|
3607
3758
|
(function (InputTextSizesEnum) {
|
|
3608
3759
|
InputTextSizesEnum["small"] = "mrx-input-text-sm";
|
|
@@ -20049,5 +20200,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
20049
20200
|
* Generated bundle index. Do not edit.
|
|
20050
20201
|
*/
|
|
20051
20202
|
|
|
20052
|
-
export { AlertColorClasses, AlertComponent, AlertIconClasses, AlertModule, AutoSaveStore, BadgeColorClassesEnum, BadgeComponent, BadgeGroupComponent, BadgeSizeEnum, BadgeTagTypeClassesEnum, BadgeTargetTypesEnum, BadgeTypeEnum, BadgesModule, BreadcrumbsComponent, BreadcrumbsModule, BreadcrumbsTypeEnum, ButtonColorsEnum, ButtonComponent, ButtonIconPositionEnum, ButtonModule, ButtonSizesEnum, ButtonTypesEnum, CdkTooltipDirective, CdkTooltipModule, CharsLeftComponent, CharsLeftModule, CheckboxComponent, CheckboxGroupComponent, CheckboxGroupModule, CheckboxModule, CodeEditorComponent, CodeEditorModule, CodeEditorOptions, ColumnComponent, ContentTitleWrapperComponent, ContentTitleWrapperModule, ContentWrapperComponent, ContentWrapperModule, ContentWrapperTypeEnum, ControlsItemComponent, ControlsVisibilityEnum, ControlsWrapperComponent, ControlsWrapperModule, CountriesISO, CountriesRusLabel, CountryISO, CurrencyModule, CurrencyPipe, DateFormatModule, DateFormatPipe, DateTimeFormatPipe, DefaultPagerSettings, DropdownComponent, DropdownModule, EditorComponent, EditorModule, ErrorMessageComponent, ErrorMessageModule, FileUploadService, FormulaEditorComponent, FormulaEditorModule, GalleryComponent, GalleryModule, HideAfterClickDirective, HintErrorMessageComponent, HintErrorMessageModule, IconButtonComponent, IconButtonModule, IconButtonSizeEnum, IconButtonStateEnum, IconButtonTypeEnum, InputDateComponent, InputDateModule, InputDateTimeComponent, InputDateTimeModule, InputDateTimeSizesEnum, InputDatepickerComponent, InputDatepickerModule, InputDatepickerSizesEnum, InputEditorModeEnum, InputFileComponent, InputFileImageComponent, InputFileImageModule, InputFileImageTypeEnum, InputFileModule, InputNumberComponent, InputNumberModule, InputNumberSizesEnum, InputOptComponent, InputOptModule, InputPasswordComponent, InputPasswordModule, InputPasswordSizesEnum, InputPhoneComponent, InputPhoneModule, InputSearchComponent, InputSearchModule, InputSearchSizesEnum, InputSelectComponent, InputSelectModule, InputSelectSizeEnum, InputTelComponent, InputTelModule, InputTelSizesEnum, InputTextComponent, InputTextIconColorEnum, InputTextModule, InputTextSizesEnum, InputTextareaComponent, InputTextareaModule, InputTextareaSizesEnum, InputTimepickerComponent, InputTimepickerModule, JsonEditorComponent, JsonEditorModule, JsonEditorOptions, LabelComponent, LabelModule, LinkComponent, LinkModule, LinkSizesEnum, LinkTargetTypesEnum, LinkTypesEnum, LoaderColorEnum, LoaderComponent, LoaderModule, LoaderSizesEnum, MODAL_CONFIG, MODAL_DATA, ModalAlignButtonsEnum, ModalBackdropTypeClasses, ModalColorEnum, ModalComponent, ModalModule, ModalRef, ModalService, ModalServiceComponent, ModalServiceModule, ModalSizesEnum, ModalType, ModalTypeClasses, MrxFormValidator, NgxOtpBehavior, PagesNavComponent, PagesNavEnum, PagesNavModule, PaginatorComponent, PaginatorModule, PaginatorPositionCss, PdfViewerComponent, PdfViewerComponentModule, PhoneFormatModule, PhoneFormatPipe, PopupComponent, PopupItemComponent, PopupModule, PopupTriggerDirective, PositionEnum, PositionStrategyEnum, PreviewEnum, ProgressClasses, ProgressComponent, ProgressModule, RadioComponent, RadioGroupComponent, RadioGroupModule, RadioModule, RadioTypesEnum, RatingComponent, RatingModule, RatingSizesEnum, RatingValueSizesEnum, RatingWrapperSizesEnum, SafeModule, SafePipe, SaveStateComponent, SaveStateModule, SelectComponent, SelectModule, SelectSizeEnum, SidePageComponent, SidePageHeaderSizesEnum, SidePageModule, SidePagePositionEnum, SidePageSizesEnum, StepperClasses, StepperComponent, StepperModule, SwitchComponent, SwitchModule, SwitchSizeEnum, SwitchTypeEnum, TabComponent, TableComponent, TableModule, TableTypeEnum, TabsClasses, TabsGroupComponent, TabsModule, TabsTypesClasses, Timezone$1 as Timezone, ToasterPosition, ToasterService, ToasterServiceModule, ToasterType, Tooltip, TooltipComponent, TooltipModule, TooltipService, TooltipTextPositionEnum, TooltipTriggerComponent, TooltipTriggerEnum, TruncateDirective, TruncateDirectiveModule, TruncateModule, TruncatePipe, TruncateTextComponent, TruncateTextModule, ValidationMethodsEnum, ValidationOptionsEnum, ValidationTypesEnum, WarningMessageComponent, WarningMessageModule, WidgetWrapperComponent, WidgetWrapperModule, convertBase64ToFile, countryData, dateTimeFormat, defaultConfig, defaultCustomConfig, formatBytes, formattingDateRange, formattingIsoToString, getBase64FromUrl, getHashCode, innerListToList, sHashCode, sliceDate, toBytes, toDate, toNumberFormat, toastrDefaultConfig, wordForm };
|
|
20203
|
+
export { AlertColorClasses, AlertComponent, AlertIconClasses, AlertModule, AutoSaveStore, BadgeColorClassesEnum, BadgeComponent, BadgeGroupComponent, BadgeSizeEnum, BadgeTagTypeClassesEnum, BadgeTargetTypesEnum, BadgeTypeEnum, BadgesModule, BreadcrumbsComponent, BreadcrumbsModule, BreadcrumbsTypeEnum, ButtonColorsEnum, ButtonComponent, ButtonIconPositionEnum, ButtonModule, ButtonSizesEnum, ButtonTypesEnum, CdkTooltipDirective, CdkTooltipModule, CharsLeftComponent, CharsLeftModule, CheckboxComponent, CheckboxGroupComponent, CheckboxGroupModule, CheckboxModule, CodeEditorComponent, CodeEditorModule, CodeEditorOptions, ColumnComponent, ContentTitleWrapperComponent, ContentTitleWrapperModule, ContentWrapperComponent, ContentWrapperModule, ContentWrapperTypeEnum, ControlsItemComponent, ControlsVisibilityEnum, ControlsWrapperComponent, ControlsWrapperModule, CountriesISO, CountriesRusLabel, CountryISO, CurrencyModule, CurrencyPipe, DateFormatModule, DateFormatPipe, DateTimeFormatPipe, DefaultPagerSettings, DropdownComponent, DropdownModule, EditorComponent, EditorModule, ErrorMessageComponent, ErrorMessageModule, FileUploadService, FormulaEditorComponent, FormulaEditorModule, GalleryComponent, GalleryModule, HideAfterClickDirective, HintErrorMessageComponent, HintErrorMessageModule, IconButtonComponent, IconButtonModule, IconButtonSizeEnum, IconButtonStateEnum, IconButtonTypeEnum, InputDateComponent, InputDateModule, InputDateTimeComponent, InputDateTimeModule, InputDateTimeSizesEnum, InputDatepickerComponent, InputDatepickerModule, InputDatepickerSizesEnum, InputEditorModeEnum, InputFileComponent, InputFileImageComponent, InputFileImageModule, InputFileImageTypeEnum, InputFileModule, InputNumberComponent, InputNumberModule, InputNumberSizesEnum, InputOptComponent, InputOptModule, InputPasswordComponent, InputPasswordModule, InputPasswordSizesEnum, InputPhoneComponent, InputPhoneModule, InputSearchComponent, InputSearchModule, InputSearchSizesEnum, InputSelectComponent, InputSelectModule, InputSelectSizeEnum, InputTelComponent, InputTelModule, InputTelSizesEnum, InputTextComponent, InputTextIconColorEnum, InputTextModule, InputTextSizesEnum, InputTextareaComponent, InputTextareaModule, InputTextareaSizesEnum, InputTimepickerComponent, InputTimepickerModule, JsonEditorComponent, JsonEditorModule, JsonEditorOptions, LabelComponent, LabelModule, LinkComponent, LinkModule, LinkSizesEnum, LinkTargetTypesEnum, LinkTypesEnum, LoaderColorEnum, LoaderComponent, LoaderModule, LoaderSizesEnum, MODAL_CONFIG, MODAL_DATA, ModalAlignButtonsEnum, ModalBackdropTypeClasses, ModalColorEnum, ModalComponent, ModalModule, ModalRef, ModalService, ModalServiceComponent, ModalServiceModule, ModalSizesEnum, ModalType, ModalTypeClasses, MrxFormValidator, NgxOtpBehavior, NotificationService, NotifyComponent, NotifyPosition, NotifyType, PagesNavComponent, PagesNavEnum, PagesNavModule, PaginatorComponent, PaginatorModule, PaginatorPositionCss, PdfViewerComponent, PdfViewerComponentModule, PhoneFormatModule, PhoneFormatPipe, PopupComponent, PopupItemComponent, PopupModule, PopupTriggerDirective, PositionEnum, PositionStrategyEnum, PreviewEnum, ProgressClasses, ProgressComponent, ProgressModule, RadioComponent, RadioGroupComponent, RadioGroupModule, RadioModule, RadioTypesEnum, RatingComponent, RatingModule, RatingSizesEnum, RatingValueSizesEnum, RatingWrapperSizesEnum, SafeModule, SafePipe, SaveStateComponent, SaveStateModule, SelectComponent, SelectModule, SelectSizeEnum, SidePageComponent, SidePageHeaderSizesEnum, SidePageModule, SidePagePositionEnum, SidePageSizesEnum, StepperClasses, StepperComponent, StepperModule, SwitchComponent, SwitchModule, SwitchSizeEnum, SwitchTypeEnum, TabComponent, TableComponent, TableModule, TableTypeEnum, TabsClasses, TabsGroupComponent, TabsModule, TabsTypesClasses, Timezone$1 as Timezone, ToasterPosition, ToasterService, ToasterServiceModule, ToasterType, Tooltip, TooltipComponent, TooltipModule, TooltipService, TooltipTextPositionEnum, TooltipTriggerComponent, TooltipTriggerEnum, TruncateDirective, TruncateDirectiveModule, TruncateModule, TruncatePipe, TruncateTextComponent, TruncateTextModule, ValidationMethodsEnum, ValidationOptionsEnum, ValidationTypesEnum, WarningMessageComponent, WarningMessageModule, WidgetWrapperComponent, WidgetWrapperModule, convertBase64ToFile, countryData, dateTimeFormat, defaultConfig, defaultCustomConfig, formatBytes, formattingDateRange, formattingIsoToString, getBase64FromUrl, getHashCode, innerListToList, sHashCode, sliceDate, toBytes, toDate, toNumberFormat, toastrDefaultConfig, wordForm };
|
|
20053
20204
|
//# sourceMappingURL=myrta-ui.mjs.map
|