myrta-ui 17.1.63 → 17.1.65
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 +14 -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';
|
|
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 || NotifyType.Info\" (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 @if (config.title) {\r\n <div class=\"mrx-notify-body__content--title\">{{ config.title }}</div>\r\n }\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:var(--spacing-1, 4px) 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-color:#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:var(--spacing-2, 8px);right:var(--spacing-2, 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 || NotifyType.Info\" (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 @if (config.title) {\r\n <div class=\"mrx-notify-body__content--title\">{{ config.title }}</div>\r\n }\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:var(--spacing-1, 4px) 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-color:#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:var(--spacing-2, 8px);right:var(--spacing-2, 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvc2VydmljZXMvbm90aWZ5LXNlcnZpY2UvY29tcG9uZW50cy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvc2VydmljZXMvbm90aWZ5LXNlcnZpY2UvY29tcG9uZW50cy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7QUFZaEUsTUFBTSxPQUFPLGVBQWU7SUFDbkIsTUFBTSxHQUFpQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRXpFLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFFeEIsS0FBSyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFDakMsS0FBSyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFDakMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7d0dBUDlCLGVBQWU7NEZBQWYsZUFBZSw0RUNmNUIsNDNDQW1DQSx5OEVEMUJJLFVBQVU7OzRGQU1ELGVBQWU7a0JBVjNCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLGtCQUFrQixXQUNuQjt3QkFDUCxVQUFVO3FCQUNYLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm90aWZ5Q29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgTm90aWZ5VHlwZSB9IGZyb20gJy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNhZmVNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi9waXBlcy9zYWZlL3NhZmUubW9kdWxlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgc2VsZWN0b3I6ICdhcHAtbm90aWZpY2F0aW9uJyxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBTYWZlTW9kdWxlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ub3RpZmljYXRpb24uY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTm90aWZ5Q29tcG9uZW50IHtcclxuICBwdWJsaWMgY29uZmlnOiBOb3RpZnlDb25maWcgPSB7IHRpdGxlOiAnJywgbWVzc2FnZTogJycsIHR5cGU6IE5vdGlmeVR5cGUuSW5mbyB9O1xyXG5cclxuICBwdWJsaWMgTm90aWZ5VHlwZSA9IE5vdGlmeVR5cGU7XHJcblxyXG4gIHB1YmxpYyBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBwdWJsaWMgcGF1c2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgcHVibGljIHJlc3VtZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibXJ4LW5vdGlmeS1ib2R5XCIgW2NsYXNzXT1cImNvbmZpZy50eXBlIHx8IE5vdGlmeVR5cGUuSW5mb1wiIChtb3VzZWVudGVyKT1cInBhdXNlLmVtaXQoKVwiIChtb3VzZWxlYXZlKT1cInJlc3VtZS5lbWl0KClcIj5cclxuICA8ZGl2IGNsYXNzPVwibXJ4LW5vdGlmeS1ib2R5X19pY29uXCI+XHJcbiAgICBAc3dpdGNoIChjb25maWcudHlwZSkge1xyXG4gICAgICBAY2FzZSAoTm90aWZ5VHlwZS5Qb3NpdGl2ZSkge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1jaGVjayBjb2xvci1wb3NpdGl2ZSBpY29uLWZvbnQtMTZcIj48L3NwYW4+XHJcbiAgICAgIH1cclxuICAgICAgQGNhc2UgKE5vdGlmeVR5cGUuTmVnYXRpdmUpIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2xvc2UgY29sb3ItbmVnYXRpdmUgaWNvbi1mb250LTE2XCI+PC9zcGFuPlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlIChOb3RpZnlUeXBlLkF0dGVudGlvbikge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1hdHRlbnRpb24gY29sb3ItYXR0ZW50aW9uIGljb24tZm9udC0xNlwiPjwvc3Bhbj5cclxuICAgICAgfVxyXG4gICAgICBAZGVmYXVsdCB7XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWluZm8gY29sb3ItaW5mbyBpY29uLWZvbnQtMTZcIj48L3NwYW4+XHJcbiAgICAgIH1cclxuICAgIH1cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibXJ4LW5vdGlmeS1ib2R5X19jb250ZW50XCI+XHJcbiAgICBAaWYgKGNvbmZpZy50aXRsZSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LW5vdGlmeS1ib2R5X19jb250ZW50LS10aXRsZVwiPnt7IGNvbmZpZy50aXRsZSB9fTwvZGl2PlxyXG4gICAgfVxyXG5cclxuICAgIEBpZiAoY29uZmlnLm1lc3NhZ2UpIHtcclxuICAgICAgQGlmICghY29uZmlnLm9wdGlvbnM/LmVuYWJsZUh0bWwpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LW5vdGlmeS1ib2R5X19jb250ZW50LS10ZXh0XCI+e3sgY29uZmlnLm1lc3NhZ2UgfX08L2Rpdj5cclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1ub3RpZnktYm9keV9fY29udGVudC0tdGV4dFwiIFtpbm5lckhUTUxdPVwiY29uZmlnLm1lc3NhZ2UgfCBzYWZlXCI+PC9kaXY+XHJcbiAgICAgIH1cclxuICAgIH1cclxuICA8L2Rpdj5cclxuXHJcbiAgQGlmIChjb25maWcub3B0aW9ucz8uY2xvc2VCdXR0b24pIHtcclxuICAgIDxzcGFuIChjbGljayk9XCJjbG9zZS5lbWl0KClcIiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2xvc2UgaWNvbi1mb250LTE2IG1yeC1ub3RpZnktYm9keV9fY2xvc2VcIj48L3NwYW4+XHJcbiAgfVxyXG48L2Rpdj5cclxuIl19
|
|
@@ -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 { NotifyService } from './notification.service';
|
|
2
|
+
export { NotifyComponent } from './components';
|
|
3
|
+
export { NotifyType, NotifyPosition } from './enums';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL3NlcnZpY2VzL25vdGlmeS1zZXJ2aWNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgTm90aWZ5U2VydmljZSB9IGZyb20gJy4vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgeyBOb3RpZnlDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMnO1xyXG5leHBvcnQgeyBOb3RpZnlDb25maWcsIE5vdGlmeVN0YXRlIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5leHBvcnQgeyBOb3RpZnlUeXBlLCBOb3RpZnlQb3NpdGlvbiB9IGZyb20gJy4vZW51bXMnO1xyXG4iXX0=
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWNvbmZpZy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvc2VydmljZXMvbm90aWZ5LXNlcnZpY2UvbW9kZWxzL25vdGlmaWNhdGlvbi1jb25maWcubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vdGlmeVR5cGUsIE5vdGlmeVBvc2l0aW9uIH0gZnJvbSAnLi4vZW51bXMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOb3RpZnlDb25maWcge1xyXG4gIGlkPzogbnVtYmVyO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIG1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgdHlwZT86IE5vdGlmeVR5cGU7XHJcbiAgb3B0aW9ucz86IHtcclxuICAgIGNsb3NlQnV0dG9uPzpib29sZWFuO1xyXG4gICAgZW5hYmxlSHRtbD86IGJvb2xlYW47XHJcbiAgICBwb3NpdGlvbj86IE5vdGlmeVBvc2l0aW9uO1xyXG4gICAgZHVyYXRpb24/OiBudW1iZXI7XHJcbiAgICBzdGlja3k/OiBib29sZWFuO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -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 NotifyService {
|
|
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: NotifyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
117
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotifyService, providedIn: 'root' });
|
|
118
|
+
}
|
|
119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotifyService, decorators: [{
|
|
120
|
+
type: Injectable,
|
|
121
|
+
args: [{
|
|
122
|
+
providedIn: 'root'
|
|
123
|
+
}]
|
|
124
|
+
}] });
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL3NlcnZpY2VzL25vdGlmeS1zZXJ2aWNlL25vdGlmaWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWdCLGNBQWMsRUFBRSxtQkFBbUIsRUFBUSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQWMsTUFBTSxTQUFTLENBQUM7QUFFckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFLL0MsTUFBTSxPQUFPLGFBQWE7SUFDUCxPQUFPLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2pDLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRW5ELGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUN4QixnQkFBZ0IsR0FBRyxjQUFjLENBQUMsV0FBVyxDQUFDO0lBQzlDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDdkIsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0lBQzNCLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUMzQiw2QkFBNkIsR0FBMEIsZUFBZSxDQUFDO0lBQ3ZFLGtCQUFrQixHQUFHLEdBQUcsQ0FBQztJQUVsQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO0lBRXJCLGFBQWEsR0FBRyxNQUFNLENBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBRTFDLElBQUksQ0FBQyxNQUFvQixFQUFFLFNBQWlDO1FBQ2pFLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM5QyxNQUFNLGtC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QUUsQ0FBQztZQUNmLFNBQVMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHNCQUFzQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzFELFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxPQUFPLFNBQXdCLENBQUM7SUFDbEMsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUV0RSxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzdCLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3BDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3dHQXhJVSxhQUFhOzRHQUFiLGFBQWEsY0FGWixNQUFNOzs0RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIENvbXBvbmVudFJlZiwgQXBwbGljYXRpb25SZWYsIEVudmlyb25tZW50SW5qZWN0b3IsIFR5cGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY3JlYXRlQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5vdGlmeVBvc2l0aW9uLCBOb3RpZnlUeXBlIH0gZnJvbSAnLi9lbnVtcyc7XHJcbmltcG9ydCB7IE5vdGlmeUNvbmZpZywgTm90aWZ5U3RhdGUgfSBmcm9tICcuL21vZGVscyc7XHJcbmltcG9ydCB7IE5vdGlmeUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOb3RpZnlTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9hcHBSZWYgPSBpbmplY3QoQXBwbGljYXRpb25SZWYpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Vudmlyb25tZW50SW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3Rvcik7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlZmF1bHREdXJhdGlvbiA9IDUwMDA7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVmYXVsdFBvc2l0aW9uID0gTm90aWZ5UG9zaXRpb24uQm90dG9tUmlnaHQ7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVmYXVsdFN0aWNreSA9IGZhbHNlO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlZmF1bHRDbG9zZUJ1dHRvbiA9IHRydWU7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVmYXVsdEVuYWJsZUh0bWwgPSBmYWxzZTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZWZhdWx0Tm90aWZpY2F0aW9uQ29tcG9uZW50OiBUeXBlPE5vdGlmeUNvbXBvbmVudD4gPSBOb3RpZnlDb21wb25lbnQ7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfYW5pbWF0aW9uRHVyYXRpb24gPSAzMDA7XHJcblxyXG4gIHByaXZhdGUgX25vdGlmaWNhdGlvbklkID0gMDtcclxuXHJcbiAgcHVibGljIG5vdGlmaWNhdGlvbnMgPSBzaWduYWw8Tm90aWZ5U3RhdGVbXT4oW10pO1xyXG5cclxuICBwdWJsaWMgc2hvdyhjb25maWc6IE5vdGlmeUNvbmZpZywgY29tcG9uZW50PzogVHlwZTxOb3RpZnlDb21wb25lbnQ+KTogbnVtYmVyIHtcclxuICAgIGNvbnN0IG5vdGlmaWNhdGlvbklkID0gdGhpcy5fbm90aWZpY2F0aW9uSWQrKztcclxuICAgIGNvbnN0IG5vdGlmaWNhdGlvbkNvbmZpZzogTm90aWZ5Q29uZmlnID0ge1xyXG4gICAgICAuLi5jb25maWcsXHJcbiAgICAgIGlkOiBub3RpZmljYXRpb25JZCxcclxuICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgIHBvc2l0aW9uOiBjb25maWcub3B0aW9ucz8ucG9zaXRpb24gfHwgdGhpcy5fZGVmYXVsdFBvc2l0aW9uLFxyXG4gICAgICAgIGR1cmF0aW9uOiBjb25maWcub3B0aW9ucz8uZHVyYXRpb24gfHwgdGhpcy5fZGVmYXVsdER1cmF0aW9uLFxyXG4gICAgICAgIHN0aWNreTogY29uZmlnLm9wdGlvbnM/LnN0aWNreSB8fCB0aGlzLl9kZWZhdWx0U3RpY2t5LFxyXG4gICAgICAgIGNsb3NlQnV0dG9uOiBjb25maWcub3B0aW9ucz8uY2xvc2VCdXR0b24gfHwgdGhpcy5fZGVmYXVsdENsb3NlQnV0dG9uLFxyXG4gICAgICAgIGVuYWJsZUh0bWw6IGNvbmZpZy5vcHRpb25zPy5lbmFibGVIdG1sIHx8IHRoaXMuX2RlZmF1bHRFbmFibGVIdG1sXHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5fY3JlYXRlTm90aWZpY2F0aW9uQ29tcG9uZW50KG5vdGlmaWNhdGlvbkNvbmZpZywgY29tcG9uZW50IHx8IHRoaXMuX2RlZmF1bHROb3RpZmljYXRpb25Db21wb25lbnQpO1xyXG5cclxuICAgIGNvbnN0IG5vdGlmaWNhdGlvblN0YXRlOiBOb3RpZnlTdGF0ZSA9IHtcclxuICAgICAgaWQ6IG5vdGlmaWNhdGlvbklkLFxyXG4gICAgICBjb25maWc6IG5vdGlmaWNhdGlvbkNvbmZpZyxcclxuICAgICAgY29tcG9uZW50UmVmLFxyXG4gICAgICByZW1haW5pbmdUaW1lOiBub3RpZmljYXRpb25Db25maWcub3B0aW9ucz8uZHVyYXRpb24sXHJcbiAgICAgIHN0YXJ0VGltZTogbm90aWZpY2F0aW9uQ29uZmlnLm9wdGlvbnM/LnN0aWNreSA/IHVuZGVmaW5lZCA6IERhdGUubm93KClcclxuICAgIH07XHJcblxyXG4gICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmNsb3NlLnN1YnNjcmliZSgoKSA9PiB0aGlzLnJlbW92ZShub3RpZmljYXRpb25JZCkpO1xyXG4gICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnBhdXNlLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9wYXVzZU5vdGlmaWNhdGlvbihub3RpZmljYXRpb25TdGF0ZSkpO1xyXG4gICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnJlc3VtZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fcmVzdW1lTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvblN0YXRlKSk7XHJcblxyXG4gICAgdGhpcy5ub3RpZmljYXRpb25zLnVwZGF0ZShub3RpZmljYXRpb25zID0+IFtcclxuICAgICAgLi4ubm90aWZpY2F0aW9ucyxcclxuICAgICAgbm90aWZpY2F0aW9uU3RhdGVcclxuICAgIF0pO1xyXG5cclxuICAgIGlmICghbm90aWZpY2F0aW9uQ29uZmlnLm9wdGlvbnM/LnN0aWNreSkge1xyXG4gICAgICBub3RpZmljYXRpb25TdGF0ZS50aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVtb3ZlKG5vdGlmaWNhdGlvbklkKSwgbm90aWZpY2F0aW9uQ29uZmlnLm9wdGlvbnM/LmR1cmF0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbm90aWZpY2F0aW9uSWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlKGlkOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5vdGlmaWNhdGlvbiA9IHRoaXMubm90aWZpY2F0aW9ucygpLmZpbmQobiA9PiBuLmlkID09PSBpZCk7XHJcbiAgICBpZiAobm90aWZpY2F0aW9uKSB7XHJcbiAgICAgIGlmIChub3RpZmljYXRpb24udGltZW91dElkKSB7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KG5vdGlmaWNhdGlvbi50aW1lb3V0SWQpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX3JlbW92ZU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24uY29tcG9uZW50UmVmKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZU5vdGlmaWNhdGlvbkNvbXBvbmVudChjb25maWc6IE5vdGlmeUNvbmZpZywgY29tcG9uZW50OiBUeXBlPE5vdGlmeUNvbXBvbmVudD4pOiBDb21wb25lbnRSZWY8Tm90aWZ5Q29tcG9uZW50PiB7XHJcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSBjcmVhdGVDb21wb25lbnQoY29tcG9uZW50LCB7XHJcbiAgICAgIGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuX2Vudmlyb25tZW50SW5qZWN0b3JcclxuICAgIH0pO1xyXG4gICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmNvbmZpZyA9IGNvbmZpZztcclxuXHJcbiAgICB0aGlzLl9hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xyXG5cclxuICAgIGNvbnN0IGRvbUVsZW0gPSAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIGFueSkucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgY29uc3QgcG9zaXRpb25Db250YWluZXIgPSB0aGlzLl9nZXRPckNyZWF0ZVBvc2l0aW9uQ29udGFpbmVyKGNvbmZpZy5vcHRpb25zPy5wb3NpdGlvbiB8fCB0aGlzLl9kZWZhdWx0UG9zaXRpb24pO1xyXG4gICAgZG9tRWxlbS5jbGFzc0xpc3QuYWRkKCdtcngtbm90aWZ5LWl0ZW0nKTtcclxuICAgIHBvc2l0aW9uQ29udGFpbmVyLmFwcGVuZENoaWxkKGRvbUVsZW0pO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4gZG9tRWxlbS5jbGFzc0xpc3QuYWRkKCdhcHBlYXJpbmcnKSwgMTApO1xyXG5cclxuICAgIHJldHVybiBjb21wb25lbnRSZWY7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZW1vdmVOb3RpZmljYXRpb24oY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8Tm90aWZ5Q29tcG9uZW50Pik6IHZvaWQge1xyXG4gICAgY29uc3QgZG9tRWxlbSA9IChjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgYW55KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgZG9tRWxlbS5jbGFzc0xpc3QuYWRkKCdyZW1vdmluZycpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9hcHBSZWYuZGV0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xyXG4gICAgICBjb21wb25lbnRSZWYuZGVzdHJveSgpO1xyXG5cclxuICAgICAgdGhpcy5ub3RpZmljYXRpb25zLnVwZGF0ZShub3RpZmljYXRpb25zID0+XHJcbiAgICAgICAgbm90aWZpY2F0aW9ucy5maWx0ZXIobiA9PiBuLmNvbXBvbmVudFJlZiAhPT0gY29tcG9uZW50UmVmKVxyXG4gICAgICApO1xyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fY2xlYW51cEVtcHR5Q29udGFpbmVycygpO1xyXG4gICAgICB9KVxyXG4gICAgfSwgdGhpcy5fYW5pbWF0aW9uRHVyYXRpb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcGF1c2VOb3RpZmljYXRpb24oc3RhdGU6IE5vdGlmeVN0YXRlKTogdm9pZCB7XHJcbiAgICBpZiAoc3RhdGUudGltZW91dElkICYmIHN0YXRlLnJlbWFpbmluZ1RpbWUgIT09IHVuZGVmaW5lZCAmJiBzdGF0ZS5zdGFydFRpbWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjbGVhclRpbWVvdXQoc3RhdGUudGltZW91dElkKTtcclxuICAgICAgc3RhdGUudGltZW91dElkID0gdW5kZWZpbmVkO1xyXG4gICAgICBzdGF0ZS5yZW1haW5pbmdUaW1lID0gc3RhdGUuY29uZmlnLm9wdGlvbnM/LmR1cmF0aW9uISAtIChEYXRlLm5vdygpIC0gc3RhdGUuc3RhcnRUaW1lKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Jlc3VtZU5vdGlmaWNhdGlvbihzdGF0ZTogTm90aWZ5U3RhdGUpOiB2b2lkIHtcclxuICAgIGlmICghc3RhdGUuY29uZmlnLm9wdGlvbnM/LnN0aWNreSAmJiBzdGF0ZS5yZW1haW5pbmdUaW1lICE9PSB1bmRlZmluZWQgJiYgIXN0YXRlLnRpbWVvdXRJZCkge1xyXG4gICAgICBzdGF0ZS50aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVtb3ZlKHN0YXRlLmlkKSwgc3RhdGUucmVtYWluaW5nVGltZSk7XHJcbiAgICAgIHN0YXRlLnN0YXJ0VGltZSA9IERhdGUubm93KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRPckNyZWF0ZVBvc2l0aW9uQ29udGFpbmVyKHBvc2l0aW9uOiBOb3RpZnlQb3NpdGlvbik6IEhUTUxFbGVtZW50IHtcclxuICAgIGxldCBjb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAubXJ4LW5vdGlmeS1jb250YWluZXIuJHtwb3NpdGlvbn1gKTtcclxuICAgIGlmICghY29udGFpbmVyKSB7XHJcbiAgICAgIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZCgnbXJ4LW5vdGlmeS1jb250YWluZXInLCBwb3NpdGlvbik7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb250YWluZXIgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jbGVhbnVwRW1wdHlDb250YWluZXJzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgY29udGFpbmVycyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tcngtbm90aWZ5LWNvbnRhaW5lcicpO1xyXG5cclxuICAgIGNvbnRhaW5lcnMuZm9yRWFjaChjb250YWluZXIgPT4ge1xyXG4gICAgICBpZiAoY29udGFpbmVyLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIGNvbnRhaW5lci5yZW1vdmUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
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 || NotifyType.Info\" (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 @if (config.title) {\r\n <div class=\"mrx-notify-body__content--title\">{{ config.title }}</div>\r\n }\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:var(--spacing-1, 4px) 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-color:#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:var(--spacing-2, 8px);right:var(--spacing-2, 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 || NotifyType.Info\" (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 @if (config.title) {\r\n <div class=\"mrx-notify-body__content--title\">{{ config.title }}</div>\r\n }\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:var(--spacing-1, 4px) 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-color:#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:var(--spacing-2, 8px);right:var(--spacing-2, 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 NotifyService {
|
|
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: NotifyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3748
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotifyService, providedIn: 'root' });
|
|
3749
|
+
}
|
|
3750
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotifyService, 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, NotifyComponent, NotifyPosition, NotifyService, 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
|