@igo2/core 21.0.0-next.28 → 21.0.0-next.29

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.
@@ -15,8 +15,8 @@ const ALTERNATE_CONFIG_FROM_DEPRECATION = new Map(Object.entries(CONFIG_DEPRECAT
15
15
  ]));
16
16
 
17
17
  const version = {
18
- lib: '21.0.0-next.28',
19
- releaseDate: 1789046146949
18
+ lib: '21.0.0-next.29',
19
+ releaseDate: 1789052168272
20
20
  };
21
21
 
22
22
  class ConfigService {
@@ -1 +1 @@
1
- {"version":3,"file":"igo2-core-config.mjs","sources":["../../../packages/core/config/src/config-deprecated.ts","../../../packages/core/config/src/version.ts","../../../packages/core/config/src/config.service.ts","../../../packages/core/config/src/config.provider.ts","../../../packages/core/config/src/config.module.ts","../../../packages/core/config/src/igo2-core-config.ts"],"sourcesContent":["import { AlternateConfigOptions, DeprecatedOptions } from './config.interface';\n\nexport const CONFIG_DEPRECATED: Record<string, DeprecatedOptions> = {};\n\nexport const ALTERNATE_CONFIG_FROM_DEPRECATION = new Map<\n string,\n AlternateConfigOptions\n>(\n Object.entries(CONFIG_DEPRECATED)\n .filter(([_, options]) => options.alternativeKey)\n .map(\n ([key, options]) =>\n [\n options.alternativeKey!,\n {\n deprecatedKey: key\n } satisfies AlternateConfigOptions\n ] as const\n )\n);\n","export interface Version {\n app?: string;\n lib?: string;\n releaseDateApp?: number;\n releaseDate?: number;\n}\n\nexport const version: Version = {\n lib: '21.0.0-next.28',\n releaseDate: 1789046146949\n};\n","import { HttpBackend, HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { ObjectUtils } from '@igo2/utils';\n\nimport { BehaviorSubject, throwError } from 'rxjs';\n\nimport {\n ALTERNATE_CONFIG_FROM_DEPRECATION,\n CONFIG_DEPRECATED\n} from './config-deprecated';\nimport { ConfigOptions } from './config.interface';\nimport { version } from './version';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigService<T extends object = Record<string, any>> {\n private config!: T | undefined;\n private httpClient: HttpClient;\n private configDeprecated = new Map(Object.entries(CONFIG_DEPRECATED));\n\n private _isLoaded$ = new BehaviorSubject(false);\n isLoaded$ = this._isLoaded$.asObservable();\n\n constructor() {\n const handler = inject(HttpBackend);\n\n this.httpClient = new HttpClient(handler);\n }\n\n /**\n * Use to get the all config file (merge from environnement.ts and config.json)\n */\n public getConfigs(): any {\n Array.from(this.configDeprecated.keys()).map((deprecatedKey) => {\n const deprecatedValue = ObjectUtils.resolve(\n this.config ?? {},\n deprecatedKey\n );\n if (deprecatedValue !== undefined) {\n this.handleDeprecatedConfig(deprecatedKey);\n }\n });\n return this.config;\n }\n\n /**\n * Use to get the data found in config file\n */\n public getConfig<T = any>(key: string, defaultValue?: unknown): T {\n let value = ObjectUtils.resolve(this.config ?? {}, key);\n\n const isDeprecated = this.configDeprecated.get(key);\n if (isDeprecated && value !== undefined) {\n this.handleDeprecatedConfig(key);\n } else if (value === undefined) {\n value = this.handleDeprecationPossibility(key);\n }\n\n return (value ?? defaultValue) as T;\n }\n\n private handleDeprecatedConfig(key: string): void {\n const options = this.configDeprecated.get(key);\n\n let message = `This config (${key}) is deprecated and will be removed shortly`;\n if (options?.alternativeKey) {\n message += ` You should use this key (${options.alternativeKey}) as an alternate solution`;\n }\n\n const currentDate = new Date();\n options?.mayBeRemoveIn && currentDate >= options.mayBeRemoveIn\n ? console.error(message)\n : console.warn(message);\n }\n\n private handleDeprecationPossibility(key: string): any {\n const options = ALTERNATE_CONFIG_FROM_DEPRECATION.get(key);\n if (!options) {\n return;\n }\n\n return this.getConfig(options.deprecatedKey);\n }\n\n /**\n * This method loads \"[path]\" to get all config's variables\n */\n public load(options: ConfigOptions<T>): void | Promise<unknown> {\n const baseConfig = options.default;\n const path = options.path;\n if (!path) {\n this.config = baseConfig;\n this._isLoaded$.next(true);\n return;\n }\n\n return new Promise((resolve) => {\n this.httpClient.get<Record<string, unknown>>(path).subscribe({\n next: (configResponse) => {\n this.config = ObjectUtils.mergeDeep(\n ObjectUtils.mergeDeep({ version }, baseConfig ?? {}),\n configResponse\n ) as T;\n this._isLoaded$.next(true);\n resolve(true);\n },\n error: (error) => {\n console.log(`Configuration file ${path} could not be read`);\n this._isLoaded$.next(false);\n resolve(true);\n return throwError(() => error.error || 'Server error');\n }\n });\n });\n }\n}\n","import {\n EnvironmentProviders,\n InjectionToken,\n inject,\n makeEnvironmentProviders,\n provideAppInitializer\n} from '@angular/core';\n\nimport { ConfigOptions } from './config.interface';\nimport { ConfigService } from './config.service';\n\nexport const CONFIG_OPTIONS = new InjectionToken<ConfigOptions>(\n 'configOptions'\n);\n\nexport function provideConfig(options: ConfigOptions): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: CONFIG_OPTIONS,\n useValue: options\n },\n provideAppInitializer(async () => {\n const configService = inject(ConfigService);\n const options = inject(CONFIG_OPTIONS);\n return configService.load(options);\n })\n ]);\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { provideConfig } from './config.provider';\n\n/**\n * @deprecated import the provideConfig directly\n */\n@NgModule({\n imports: [],\n declarations: [],\n exports: []\n})\nexport class IgoConfigModule {\n static forRoot(): ModuleWithProviders<IgoConfigModule> {\n return {\n ngModule: IgoConfigModule,\n providers: [provideConfig({})]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"igo2-core-config.mjs","sources":["../../../packages/core/config/src/config-deprecated.ts","../../../packages/core/config/src/version.ts","../../../packages/core/config/src/config.service.ts","../../../packages/core/config/src/config.provider.ts","../../../packages/core/config/src/config.module.ts","../../../packages/core/config/src/igo2-core-config.ts"],"sourcesContent":["import { AlternateConfigOptions, DeprecatedOptions } from './config.interface';\n\nexport const CONFIG_DEPRECATED: Record<string, DeprecatedOptions> = {};\n\nexport const ALTERNATE_CONFIG_FROM_DEPRECATION = new Map<\n string,\n AlternateConfigOptions\n>(\n Object.entries(CONFIG_DEPRECATED)\n .filter(([_, options]) => options.alternativeKey)\n .map(\n ([key, options]) =>\n [\n options.alternativeKey!,\n {\n deprecatedKey: key\n } satisfies AlternateConfigOptions\n ] as const\n )\n);\n","export interface Version {\n app?: string;\n lib?: string;\n releaseDateApp?: number;\n releaseDate?: number;\n}\n\nexport const version: Version = {\n lib: '21.0.0-next.29',\n releaseDate: 1789052168272\n};\n","import { HttpBackend, HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { ObjectUtils } from '@igo2/utils';\n\nimport { BehaviorSubject, throwError } from 'rxjs';\n\nimport {\n ALTERNATE_CONFIG_FROM_DEPRECATION,\n CONFIG_DEPRECATED\n} from './config-deprecated';\nimport { ConfigOptions } from './config.interface';\nimport { version } from './version';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigService<T extends object = Record<string, any>> {\n private config!: T | undefined;\n private httpClient: HttpClient;\n private configDeprecated = new Map(Object.entries(CONFIG_DEPRECATED));\n\n private _isLoaded$ = new BehaviorSubject(false);\n isLoaded$ = this._isLoaded$.asObservable();\n\n constructor() {\n const handler = inject(HttpBackend);\n\n this.httpClient = new HttpClient(handler);\n }\n\n /**\n * Use to get the all config file (merge from environnement.ts and config.json)\n */\n public getConfigs(): any {\n Array.from(this.configDeprecated.keys()).map((deprecatedKey) => {\n const deprecatedValue = ObjectUtils.resolve(\n this.config ?? {},\n deprecatedKey\n );\n if (deprecatedValue !== undefined) {\n this.handleDeprecatedConfig(deprecatedKey);\n }\n });\n return this.config;\n }\n\n /**\n * Use to get the data found in config file\n */\n public getConfig<T = any>(key: string, defaultValue?: unknown): T {\n let value = ObjectUtils.resolve(this.config ?? {}, key);\n\n const isDeprecated = this.configDeprecated.get(key);\n if (isDeprecated && value !== undefined) {\n this.handleDeprecatedConfig(key);\n } else if (value === undefined) {\n value = this.handleDeprecationPossibility(key);\n }\n\n return (value ?? defaultValue) as T;\n }\n\n private handleDeprecatedConfig(key: string): void {\n const options = this.configDeprecated.get(key);\n\n let message = `This config (${key}) is deprecated and will be removed shortly`;\n if (options?.alternativeKey) {\n message += ` You should use this key (${options.alternativeKey}) as an alternate solution`;\n }\n\n const currentDate = new Date();\n options?.mayBeRemoveIn && currentDate >= options.mayBeRemoveIn\n ? console.error(message)\n : console.warn(message);\n }\n\n private handleDeprecationPossibility(key: string): any {\n const options = ALTERNATE_CONFIG_FROM_DEPRECATION.get(key);\n if (!options) {\n return;\n }\n\n return this.getConfig(options.deprecatedKey);\n }\n\n /**\n * This method loads \"[path]\" to get all config's variables\n */\n public load(options: ConfigOptions<T>): void | Promise<unknown> {\n const baseConfig = options.default;\n const path = options.path;\n if (!path) {\n this.config = baseConfig;\n this._isLoaded$.next(true);\n return;\n }\n\n return new Promise((resolve) => {\n this.httpClient.get<Record<string, unknown>>(path).subscribe({\n next: (configResponse) => {\n this.config = ObjectUtils.mergeDeep(\n ObjectUtils.mergeDeep({ version }, baseConfig ?? {}),\n configResponse\n ) as T;\n this._isLoaded$.next(true);\n resolve(true);\n },\n error: (error) => {\n console.log(`Configuration file ${path} could not be read`);\n this._isLoaded$.next(false);\n resolve(true);\n return throwError(() => error.error || 'Server error');\n }\n });\n });\n }\n}\n","import {\n EnvironmentProviders,\n InjectionToken,\n inject,\n makeEnvironmentProviders,\n provideAppInitializer\n} from '@angular/core';\n\nimport { ConfigOptions } from './config.interface';\nimport { ConfigService } from './config.service';\n\nexport const CONFIG_OPTIONS = new InjectionToken<ConfigOptions>(\n 'configOptions'\n);\n\nexport function provideConfig(options: ConfigOptions): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: CONFIG_OPTIONS,\n useValue: options\n },\n provideAppInitializer(async () => {\n const configService = inject(ConfigService);\n const options = inject(CONFIG_OPTIONS);\n return configService.load(options);\n })\n ]);\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { provideConfig } from './config.provider';\n\n/**\n * @deprecated import the provideConfig directly\n */\n@NgModule({\n imports: [],\n declarations: [],\n exports: []\n})\nexport class IgoConfigModule {\n static forRoot(): ModuleWithProviders<IgoConfigModule> {\n return {\n ngModule: IgoConfigModule,\n providers: [provideConfig({})]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
- import { ChangeDetectionStrategy, Component, inject, ApplicationRef, createComponent, Injectable, signal, provideAppInitializer } from '@angular/core';
3
- import { DOCUMENT, NgClass } from '@angular/common';
2
+ import { inject, output, signal, ChangeDetectionStrategy, Component, ApplicationRef, createComponent, Injectable, provideAppInitializer } from '@angular/core';
3
+ import { NgClass, DOCUMENT } from '@angular/common';
4
4
  import { MatIconButton } from '@angular/material/button';
5
5
  import * as i1 from '@angular/material/icon';
6
6
  import { MatIconModule } from '@angular/material/icon';
@@ -21,6 +21,111 @@ var MessageType;
21
21
  MessageType["SHOW"] = "show";
22
22
  })(MessageType || (MessageType = {}));
23
23
 
24
+ class ToastComponent {
25
+ sanitizer = inject(DomSanitizer);
26
+ removed = output();
27
+ toastId;
28
+ type;
29
+ title = '';
30
+ config;
31
+ enableHtml = false;
32
+ showIcon = false;
33
+ _message = '';
34
+ safeMessage = '';
35
+ get message() {
36
+ return this._message;
37
+ }
38
+ set message(value) {
39
+ this._message = value;
40
+ this.safeMessage = this.sanitizer.bypassSecurityTrustHtml(value);
41
+ }
42
+ progress = signal(100, ...(ngDevMode ? [{ debugName: "progress" }] : /* istanbul ignore next */ []));
43
+ animationState = signal('inactive', ...(ngDevMode ? [{ debugName: "animationState" }] : /* istanbul ignore next */ []));
44
+ timeoutId = null;
45
+ progressIntervalId = null;
46
+ startTime = 0;
47
+ remainingTime = 0;
48
+ totalTimeOut = 0;
49
+ ngOnInit() {
50
+ this.animationState.set('active');
51
+ if (!this.config.disableTimeOut) {
52
+ this.remainingTime = this.config.timeOut ?? 10000;
53
+ this.totalTimeOut = this.remainingTime;
54
+ this.startTimer();
55
+ }
56
+ }
57
+ ngOnDestroy() {
58
+ this.clearTimers();
59
+ }
60
+ onEnter() {
61
+ if (!this.config.disableTimeOut) {
62
+ this.remainingTime = (this.progress() / 100) * this.totalTimeOut;
63
+ this.clearTimers();
64
+ }
65
+ }
66
+ onLeave() {
67
+ if (!this.config.disableTimeOut) {
68
+ if (!this.config.freezeProgressOnHover) {
69
+ const extendedTimeOut = this.config.extendedTimeOut ?? 10000;
70
+ this.remainingTime = extendedTimeOut;
71
+ this.totalTimeOut = extendedTimeOut;
72
+ }
73
+ this.startTimer();
74
+ }
75
+ }
76
+ onTap() {
77
+ if (this.config.tapToDismiss) {
78
+ this.remove();
79
+ }
80
+ }
81
+ close(event) {
82
+ event.stopPropagation();
83
+ this.remove();
84
+ }
85
+ remove() {
86
+ this.clearTimers();
87
+ this.animationState.set('removed');
88
+ setTimeout(() => {
89
+ this.removed.emit(this.toastId);
90
+ }, 300);
91
+ }
92
+ startTimer() {
93
+ this.startTime = Date.now();
94
+ const duration = this.remainingTime;
95
+ this.progress.set((duration / this.totalTimeOut) * 100);
96
+ this.progressIntervalId = setInterval(() => {
97
+ const elapsed = Date.now() - this.startTime;
98
+ const remaining = Math.max(0, duration - elapsed);
99
+ this.progress.set((remaining / this.totalTimeOut) * 100);
100
+ }, 50);
101
+ this.timeoutId = setTimeout(() => {
102
+ this.remove();
103
+ }, duration);
104
+ }
105
+ clearTimers() {
106
+ if (this.timeoutId) {
107
+ clearTimeout(this.timeoutId);
108
+ this.timeoutId = null;
109
+ }
110
+ if (this.progressIntervalId) {
111
+ clearInterval(this.progressIntervalId);
112
+ this.progressIntervalId = null;
113
+ }
114
+ }
115
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
116
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: ToastComponent, isStandalone: true, selector: "igo-toast", outputs: { removed: "removed" }, host: { listeners: { "mouseenter": "onEnter()", "mouseleave": "onLeave()", "touchstart": "onEnter()", "touchend": "onLeave()" }, properties: { "class": "animationState()" } }, ngImport: i0, template: "<div\n class=\"igo-toast\"\n [ngClass]=\"'toast-' + type\"\n [attr.tabindex]=\"config.tapToDismiss ? '0' : null\"\n (click)=\"onTap()\"\n (keydown.enter)=\"onTap()\"\n>\n @if (showIcon) {\n <mat-icon class=\"toast-icon\">\n @switch (type) {\n @case ('success') {\n check_circle\n }\n @case ('error') {\n error\n }\n @case ('warning') {\n warning\n }\n @default {\n info\n }\n }\n </mat-icon>\n }\n <div class=\"toast-content\">\n @if (title) {\n <header class=\"toast-title\">{{ title }}</header>\n }\n @if (!enableHtml) {\n <p class=\"toast-message\">{{ message }}</p>\n } @else {\n <p class=\"toast-message\" [innerHTML]=\"safeMessage\"></p>\n }\n </div>\n @if (config.closeButton) {\n <button matIconButton class=\"toast-close-button\" (click)=\"close($event)\">\n <mat-icon>close</mat-icon>\n </button>\n }\n @if (config.progressBar && !config.disableTimeOut) {\n <mat-progress-bar mode=\"determinate\" [value]=\"progress()\" />\n }\n</div>\n", styles: [":host{display:block;pointer-events:all;opacity:0;transition:opacity .3s ease-out}:host.active{opacity:1;transition:opacity .3s ease-in}:host.inactive,:host.removed{opacity:0}:host ::ng-deep .mdc-linear-progress__bar{transition:transform .15s 0ms cubic-bezier(.4,0,.6,1)}.igo-toast{position:relative;overflow:hidden;padding:12px 16px;border-radius:4px;box-shadow:0 3px 6px -1px #0000001f,0 10px 36px -4px #4d60e84d;color:#fff;min-width:300px;max-width:400px;cursor:pointer;display:flex;align-items:flex-start;gap:12px}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-color:#f89406}.toast-show{background-color:#2f96b4}.toast-icon{flex-shrink:0;font-size:22px;width:22px;height:22px}.toast-content{flex:1;min-width:0}.toast-title{font-weight:700;font-size:var(--sdg-font-size-h5, 19px);line-height:24px}.toast-message{color:inherit;font-size:13px;word-wrap:break-word;margin-bottom:0!important}.toast-close-button{position:absolute;top:4px;right:4px;opacity:.8;color:inherit}.toast-close-button:hover{opacity:1}mat-progress-bar{position:absolute;bottom:0;left:0;width:100%;--mdc-linear-progress-active-indicator-transition-duration: 0ms;--mdc-linear-progress-active-indicator-color: rgba( 255, 255, 255, .7 ) !important;--mdc-linear-progress-track-color: rgba(255, 255, 255, .3) !important;--mat-progress-bar-active-indicator-color: rgba(255, 255, 255, .7);--mat-progress-bar-track-color: rgba(255, 255, 255, .3);--mdc-linear-progress-track-height: 3px;--mdc-linear-progress-active-indicator-height: 3px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
117
+ }
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ToastComponent, decorators: [{
119
+ type: Component,
120
+ args: [{ selector: 'igo-toast', standalone: true, imports: [NgClass, MatIconModule, MatIconButton, MatProgressBar], changeDetection: ChangeDetectionStrategy.OnPush, host: {
121
+ '[class]': 'animationState()',
122
+ '(mouseenter)': 'onEnter()',
123
+ '(mouseleave)': 'onLeave()',
124
+ '(touchstart)': 'onEnter()',
125
+ '(touchend)': 'onLeave()'
126
+ }, template: "<div\n class=\"igo-toast\"\n [ngClass]=\"'toast-' + type\"\n [attr.tabindex]=\"config.tapToDismiss ? '0' : null\"\n (click)=\"onTap()\"\n (keydown.enter)=\"onTap()\"\n>\n @if (showIcon) {\n <mat-icon class=\"toast-icon\">\n @switch (type) {\n @case ('success') {\n check_circle\n }\n @case ('error') {\n error\n }\n @case ('warning') {\n warning\n }\n @default {\n info\n }\n }\n </mat-icon>\n }\n <div class=\"toast-content\">\n @if (title) {\n <header class=\"toast-title\">{{ title }}</header>\n }\n @if (!enableHtml) {\n <p class=\"toast-message\">{{ message }}</p>\n } @else {\n <p class=\"toast-message\" [innerHTML]=\"safeMessage\"></p>\n }\n </div>\n @if (config.closeButton) {\n <button matIconButton class=\"toast-close-button\" (click)=\"close($event)\">\n <mat-icon>close</mat-icon>\n </button>\n }\n @if (config.progressBar && !config.disableTimeOut) {\n <mat-progress-bar mode=\"determinate\" [value]=\"progress()\" />\n }\n</div>\n", styles: [":host{display:block;pointer-events:all;opacity:0;transition:opacity .3s ease-out}:host.active{opacity:1;transition:opacity .3s ease-in}:host.inactive,:host.removed{opacity:0}:host ::ng-deep .mdc-linear-progress__bar{transition:transform .15s 0ms cubic-bezier(.4,0,.6,1)}.igo-toast{position:relative;overflow:hidden;padding:12px 16px;border-radius:4px;box-shadow:0 3px 6px -1px #0000001f,0 10px 36px -4px #4d60e84d;color:#fff;min-width:300px;max-width:400px;cursor:pointer;display:flex;align-items:flex-start;gap:12px}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-color:#f89406}.toast-show{background-color:#2f96b4}.toast-icon{flex-shrink:0;font-size:22px;width:22px;height:22px}.toast-content{flex:1;min-width:0}.toast-title{font-weight:700;font-size:var(--sdg-font-size-h5, 19px);line-height:24px}.toast-message{color:inherit;font-size:13px;word-wrap:break-word;margin-bottom:0!important}.toast-close-button{position:absolute;top:4px;right:4px;opacity:.8;color:inherit}.toast-close-button:hover{opacity:1}mat-progress-bar{position:absolute;bottom:0;left:0;width:100%;--mdc-linear-progress-active-indicator-transition-duration: 0ms;--mdc-linear-progress-active-indicator-color: rgba( 255, 255, 255, .7 ) !important;--mdc-linear-progress-track-color: rgba(255, 255, 255, .3) !important;--mat-progress-bar-active-indicator-color: rgba(255, 255, 255, .7);--mat-progress-bar-track-color: rgba(255, 255, 255, .3);--mdc-linear-progress-track-height: 3px;--mdc-linear-progress-active-indicator-height: 3px}\n"] }]
127
+ }], propDecorators: { removed: [{ type: i0.Output, args: ["removed"] }] } });
128
+
24
129
  class ToastContainerComponent {
25
130
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ToastContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
26
131
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.19", type: ToastContainerComponent, isStandalone: true, selector: "igo-toast-container", ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{position:fixed;pointer-events:none;z-index:10000;display:flex;flex-direction:column;row-gap:8px}:host.toast-bottom-right{bottom:12px;right:12px;align-items:flex-end}:host.toast-bottom-left{bottom:12px;left:12px;align-items:flex-start}:host.toast-top-right{top:12px;right:12px;align-items:flex-end}:host.toast-top-left{top:12px;left:12px;align-items:flex-start}:host.toast-top-center{top:12px;left:50%;transform:translate(-50%);align-items:center}:host.toast-bottom-center{bottom:12px;left:50%;transform:translate(-50%);align-items:center}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
@@ -136,6 +241,9 @@ class ToastService {
136
241
  toastRef.instance.config = mergedConfig;
137
242
  toastRef.instance.enableHtml = mergedConfig.enableHtml ?? true;
138
243
  toastRef.instance.showIcon = mergedConfig.showIcon ?? false;
244
+ toastRef.instance.removed.subscribe((removedToastId) => {
245
+ this.removeToast(removedToastId);
246
+ });
139
247
  this.toasts.set(toastId, toastRef);
140
248
  this.appRef.attachView(toastRef.hostView);
141
249
  container.location.nativeElement.appendChild(toastRef.location.nativeElement);
@@ -162,111 +270,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImpo
162
270
  args: [{ providedIn: 'root' }]
163
271
  }] });
164
272
 
165
- class ToastComponent {
166
- toastService = inject(ToastService);
167
- sanitizer = inject(DomSanitizer);
168
- toastId;
169
- type;
170
- title = '';
171
- config;
172
- enableHtml = false;
173
- showIcon = false;
174
- _message = '';
175
- safeMessage = '';
176
- get message() {
177
- return this._message;
178
- }
179
- set message(value) {
180
- this._message = value;
181
- this.safeMessage = this.sanitizer.bypassSecurityTrustHtml(value);
182
- }
183
- progress = signal(100, ...(ngDevMode ? [{ debugName: "progress" }] : /* istanbul ignore next */ []));
184
- animationState = signal('inactive', ...(ngDevMode ? [{ debugName: "animationState" }] : /* istanbul ignore next */ []));
185
- timeoutId = null;
186
- progressIntervalId = null;
187
- startTime = 0;
188
- remainingTime = 0;
189
- totalTimeOut = 0;
190
- ngOnInit() {
191
- this.animationState.set('active');
192
- if (!this.config.disableTimeOut) {
193
- this.remainingTime = this.config.timeOut ?? 10000;
194
- this.totalTimeOut = this.remainingTime;
195
- this.startTimer();
196
- }
197
- }
198
- ngOnDestroy() {
199
- this.clearTimers();
200
- }
201
- onEnter() {
202
- if (!this.config.disableTimeOut) {
203
- this.remainingTime = (this.progress() / 100) * this.totalTimeOut;
204
- this.clearTimers();
205
- }
206
- }
207
- onLeave() {
208
- if (!this.config.disableTimeOut) {
209
- if (!this.config.freezeProgressOnHover) {
210
- const extendedTimeOut = this.config.extendedTimeOut ?? 10000;
211
- this.remainingTime = extendedTimeOut;
212
- this.totalTimeOut = extendedTimeOut;
213
- }
214
- this.startTimer();
215
- }
216
- }
217
- onTap() {
218
- if (this.config.tapToDismiss) {
219
- this.remove();
220
- }
221
- }
222
- close(event) {
223
- event.stopPropagation();
224
- this.remove();
225
- }
226
- remove() {
227
- this.clearTimers();
228
- this.animationState.set('removed');
229
- setTimeout(() => {
230
- this.toastService.removeToast(this.toastId);
231
- }, 300);
232
- }
233
- startTimer() {
234
- this.startTime = Date.now();
235
- const duration = this.remainingTime;
236
- this.progress.set((duration / this.totalTimeOut) * 100);
237
- this.progressIntervalId = setInterval(() => {
238
- const elapsed = Date.now() - this.startTime;
239
- const remaining = Math.max(0, duration - elapsed);
240
- this.progress.set((remaining / this.totalTimeOut) * 100);
241
- }, 50);
242
- this.timeoutId = setTimeout(() => {
243
- this.remove();
244
- }, duration);
245
- }
246
- clearTimers() {
247
- if (this.timeoutId) {
248
- clearTimeout(this.timeoutId);
249
- this.timeoutId = null;
250
- }
251
- if (this.progressIntervalId) {
252
- clearInterval(this.progressIntervalId);
253
- this.progressIntervalId = null;
254
- }
255
- }
256
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
257
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: ToastComponent, isStandalone: true, selector: "igo-toast", host: { listeners: { "mouseenter": "onEnter()", "mouseleave": "onLeave()", "touchstart": "onEnter()", "touchend": "onLeave()" }, properties: { "class": "animationState()" } }, ngImport: i0, template: "<div\n class=\"igo-toast\"\n [ngClass]=\"'toast-' + type\"\n [attr.tabindex]=\"config.tapToDismiss ? '0' : null\"\n (click)=\"onTap()\"\n (keydown.enter)=\"onTap()\"\n>\n @if (showIcon) {\n <mat-icon class=\"toast-icon\">\n @switch (type) {\n @case ('success') {\n check_circle\n }\n @case ('error') {\n error\n }\n @case ('warning') {\n warning\n }\n @default {\n info\n }\n }\n </mat-icon>\n }\n <div class=\"toast-content\">\n @if (title) {\n <header class=\"toast-title\">{{ title }}</header>\n }\n @if (!enableHtml) {\n <p class=\"toast-message\">{{ message }}</p>\n } @else {\n <p class=\"toast-message\" [innerHTML]=\"safeMessage\"></p>\n }\n </div>\n @if (config.closeButton) {\n <button matIconButton class=\"toast-close-button\" (click)=\"close($event)\">\n <mat-icon>close</mat-icon>\n </button>\n }\n @if (config.progressBar && !config.disableTimeOut) {\n <mat-progress-bar mode=\"determinate\" [value]=\"progress()\" />\n }\n</div>\n", styles: [":host{display:block;pointer-events:all;opacity:0;transition:opacity .3s ease-out}:host.active{opacity:1;transition:opacity .3s ease-in}:host.inactive,:host.removed{opacity:0}:host ::ng-deep .mdc-linear-progress__bar{transition:transform .15s 0ms cubic-bezier(.4,0,.6,1)}.igo-toast{position:relative;overflow:hidden;padding:12px 16px;border-radius:4px;box-shadow:0 3px 6px -1px #0000001f,0 10px 36px -4px #4d60e84d;color:#fff;min-width:300px;max-width:400px;cursor:pointer;display:flex;align-items:flex-start;gap:12px}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-color:#f89406}.toast-show{background-color:#2f96b4}.toast-icon{flex-shrink:0;font-size:22px;width:22px;height:22px}.toast-content{flex:1;min-width:0}.toast-title{font-weight:700;font-size:var(--sdg-font-size-h5, 19px);line-height:24px}.toast-message{color:inherit;font-size:13px;word-wrap:break-word;margin-bottom:0!important}.toast-close-button{position:absolute;top:4px;right:4px;opacity:.8;color:inherit}.toast-close-button:hover{opacity:1}mat-progress-bar{position:absolute;bottom:0;left:0;width:100%;--mdc-linear-progress-active-indicator-transition-duration: 0ms;--mdc-linear-progress-active-indicator-color: rgba( 255, 255, 255, .7 ) !important;--mdc-linear-progress-track-color: rgba(255, 255, 255, .3) !important;--mat-progress-bar-active-indicator-color: rgba(255, 255, 255, .7);--mat-progress-bar-track-color: rgba(255, 255, 255, .3);--mdc-linear-progress-track-height: 3px;--mdc-linear-progress-active-indicator-height: 3px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
258
- }
259
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ToastComponent, decorators: [{
260
- type: Component,
261
- args: [{ selector: 'igo-toast', standalone: true, imports: [NgClass, MatIconModule, MatIconButton, MatProgressBar], changeDetection: ChangeDetectionStrategy.OnPush, host: {
262
- '[class]': 'animationState()',
263
- '(mouseenter)': 'onEnter()',
264
- '(mouseleave)': 'onLeave()',
265
- '(touchstart)': 'onEnter()',
266
- '(touchend)': 'onLeave()'
267
- }, template: "<div\n class=\"igo-toast\"\n [ngClass]=\"'toast-' + type\"\n [attr.tabindex]=\"config.tapToDismiss ? '0' : null\"\n (click)=\"onTap()\"\n (keydown.enter)=\"onTap()\"\n>\n @if (showIcon) {\n <mat-icon class=\"toast-icon\">\n @switch (type) {\n @case ('success') {\n check_circle\n }\n @case ('error') {\n error\n }\n @case ('warning') {\n warning\n }\n @default {\n info\n }\n }\n </mat-icon>\n }\n <div class=\"toast-content\">\n @if (title) {\n <header class=\"toast-title\">{{ title }}</header>\n }\n @if (!enableHtml) {\n <p class=\"toast-message\">{{ message }}</p>\n } @else {\n <p class=\"toast-message\" [innerHTML]=\"safeMessage\"></p>\n }\n </div>\n @if (config.closeButton) {\n <button matIconButton class=\"toast-close-button\" (click)=\"close($event)\">\n <mat-icon>close</mat-icon>\n </button>\n }\n @if (config.progressBar && !config.disableTimeOut) {\n <mat-progress-bar mode=\"determinate\" [value]=\"progress()\" />\n }\n</div>\n", styles: [":host{display:block;pointer-events:all;opacity:0;transition:opacity .3s ease-out}:host.active{opacity:1;transition:opacity .3s ease-in}:host.inactive,:host.removed{opacity:0}:host ::ng-deep .mdc-linear-progress__bar{transition:transform .15s 0ms cubic-bezier(.4,0,.6,1)}.igo-toast{position:relative;overflow:hidden;padding:12px 16px;border-radius:4px;box-shadow:0 3px 6px -1px #0000001f,0 10px 36px -4px #4d60e84d;color:#fff;min-width:300px;max-width:400px;cursor:pointer;display:flex;align-items:flex-start;gap:12px}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-color:#f89406}.toast-show{background-color:#2f96b4}.toast-icon{flex-shrink:0;font-size:22px;width:22px;height:22px}.toast-content{flex:1;min-width:0}.toast-title{font-weight:700;font-size:var(--sdg-font-size-h5, 19px);line-height:24px}.toast-message{color:inherit;font-size:13px;word-wrap:break-word;margin-bottom:0!important}.toast-close-button{position:absolute;top:4px;right:4px;opacity:.8;color:inherit}.toast-close-button:hover{opacity:1}mat-progress-bar{position:absolute;bottom:0;left:0;width:100%;--mdc-linear-progress-active-indicator-transition-duration: 0ms;--mdc-linear-progress-active-indicator-color: rgba( 255, 255, 255, .7 ) !important;--mdc-linear-progress-track-color: rgba(255, 255, 255, .3) !important;--mat-progress-bar-active-indicator-color: rgba(255, 255, 255, .7);--mat-progress-bar-track-color: rgba(255, 255, 255, .3);--mdc-linear-progress-track-height: 3px;--mdc-linear-progress-active-indicator-height: 3px}\n"] }]
268
- }] });
269
-
270
273
  /**
271
274
  * Provides the message service with custom toast configuration.
272
275
  * Since ToastService is providedIn: 'root', this simply configures it.
@@ -1 +1 @@
1
- {"version":3,"file":"igo2-core-message.mjs","sources":["../../../packages/core/message/src/message.enum.ts","../../../packages/core/message/src/toast/toast-container.component.ts","../../../packages/core/message/src/toast/toast.interface.ts","../../../packages/core/message/src/toast/toast.service.ts","../../../packages/core/message/src/toast/toast/toast.component.ts","../../../packages/core/message/src/toast/toast/toast.component.html","../../../packages/core/message/src/message.provider.ts","../../../packages/core/message/src/message.service.ts","../../../packages/core/message/src/igo2-core-message.ts"],"sourcesContent":["export enum MessageType {\n ERROR = 'error',\n ALERT = 'warning',\n // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values\n WARNING = 'warning',\n INFO = 'info',\n SUCCESS = 'success',\n SHOW = 'show'\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'igo-toast-container',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content></ng-content>`,\n styles: [\n `\n :host {\n position: fixed;\n pointer-events: none;\n z-index: 10000;\n display: flex;\n flex-direction: column;\n row-gap: 8px;\n }\n\n :host.toast-bottom-right {\n bottom: 12px;\n right: 12px;\n align-items: flex-end;\n }\n\n :host.toast-bottom-left {\n bottom: 12px;\n left: 12px;\n align-items: flex-start;\n }\n\n :host.toast-top-right {\n top: 12px;\n right: 12px;\n align-items: flex-end;\n }\n\n :host.toast-top-left {\n top: 12px;\n left: 12px;\n align-items: flex-start;\n }\n\n :host.toast-top-center {\n top: 12px;\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n }\n\n :host.toast-bottom-center {\n bottom: 12px;\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n }\n `\n ]\n})\nexport class ToastContainerComponent {}\n","export interface ToastConfig {\n timeOut: number;\n extendedTimeOut: number;\n closeButton: boolean;\n progressBar: boolean;\n tapToDismiss: boolean;\n positionClass: string;\n maxOpened: number;\n preventDuplicates: boolean;\n enableHtml: boolean;\n disableTimeOut: boolean;\n showIcon: boolean;\n freezeProgressOnHover: boolean;\n}\n\nexport type IndividualToastConfig = Partial<ToastConfig>;\n\nexport interface ToastRef {\n toastId: number;\n message: string;\n title: string;\n type: ToastType;\n config: ToastConfig;\n}\n\nexport type ToastType = 'success' | 'error' | 'info' | 'warning' | 'show';\n\nexport const DEFAULT_TOAST_CONFIG: ToastConfig = {\n timeOut: 10000,\n extendedTimeOut: 10000,\n closeButton: true,\n progressBar: true,\n tapToDismiss: true,\n positionClass: 'toast-bottom-right',\n maxOpened: 4,\n preventDuplicates: true,\n enableHtml: true,\n disableTimeOut: false,\n showIcon: false,\n freezeProgressOnHover: true\n};\n","import { DOCUMENT } from '@angular/common';\nimport {\n ApplicationRef,\n ComponentRef,\n Injectable,\n createComponent,\n inject\n} from '@angular/core';\n\nimport { ToastContainerComponent } from './toast-container.component';\nimport {\n DEFAULT_TOAST_CONFIG,\n IndividualToastConfig,\n ToastConfig,\n ToastRef,\n ToastType\n} from './toast.interface';\nimport { ToastComponent } from './toast/toast.component';\n\nexport interface ActiveToast {\n toastId: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n private appRef = inject(ApplicationRef);\n private document = inject(DOCUMENT);\n\n private toastIdCounter = 0;\n private toasts: Map<number, ComponentRef<ToastComponent>> = new Map();\n private containerRef: ComponentRef<ToastContainerComponent> | null = null;\n private config: ToastConfig = { ...DEFAULT_TOAST_CONFIG };\n private lastMessage = '';\n private lastTitle = '';\n\n configure(config: Partial<ToastConfig>) {\n this.config = { ...this.config, ...config };\n }\n\n success(\n message: string,\n title: string,\n options?: IndividualToastConfig\n ): ActiveToast {\n return this.show('success', message, title, options);\n }\n\n error(\n message: string,\n title: string,\n options?: IndividualToastConfig\n ): ActiveToast {\n return this.show('error', message, title, options);\n }\n\n info(\n message: string,\n title: string,\n options?: IndividualToastConfig\n ): ActiveToast {\n return this.show('info', message, title, options);\n }\n\n warning(\n message: string,\n title: string,\n options?: IndividualToastConfig\n ): ActiveToast {\n return this.show('warning', message, title, options);\n }\n\n remove(toastId: number) {\n const ref = this.toasts.get(toastId);\n if (ref) {\n ref.instance.remove();\n }\n }\n\n /** Called by ToastComponent when removal animation completes */\n removeToast(toastId: number) {\n const ref = this.toasts.get(toastId);\n if (ref) {\n this.appRef.detachView(ref.hostView);\n ref.destroy();\n this.toasts.delete(toastId);\n }\n if (this.toasts.size === 0 && this.containerRef) {\n this.appRef.detachView(this.containerRef.hostView);\n this.containerRef.destroy();\n this.containerRef = null;\n }\n }\n\n getActiveToasts(): ToastRef[] {\n return Array.from(this.toasts.entries()).map(([id, ref]) => ({\n toastId: id,\n message: ref.instance.message,\n title: ref.instance.title,\n type: ref.instance.type,\n config: ref.instance.config as ToastConfig\n }));\n }\n\n updateToast(toastId: number, message: string, title: string) {\n const ref = this.toasts.get(toastId);\n if (ref) {\n ref.instance.message = message;\n ref.instance.title = title;\n }\n }\n\n private show(\n type: ToastType,\n message: string,\n title: string,\n options?: IndividualToastConfig\n ): ActiveToast {\n const mergedConfig = { ...this.config, ...options };\n\n // Prevent duplicates\n if (mergedConfig.preventDuplicates) {\n if (this.lastMessage === message && this.lastTitle === title) {\n // Return last toast id\n const lastEntry = Array.from(this.toasts.entries()).pop();\n if (lastEntry) {\n return { toastId: lastEntry[0] };\n }\n }\n }\n\n // Enforce max opened\n if (mergedConfig.maxOpened && this.toasts.size >= mergedConfig.maxOpened) {\n const firstKey = this.toasts.keys().next().value!;\n this.remove(firstKey);\n }\n\n this.lastMessage = message;\n this.lastTitle = title;\n\n const toastId = ++this.toastIdCounter;\n const container = this.getOrCreateContainer(\n mergedConfig.positionClass || 'toast-bottom-right'\n );\n\n const toastRef = createComponent(ToastComponent, {\n environmentInjector: this.appRef.injector\n });\n\n toastRef.instance.toastId = toastId;\n toastRef.instance.type = type;\n toastRef.instance.message = message;\n toastRef.instance.title = title;\n toastRef.instance.config = mergedConfig as any;\n toastRef.instance.enableHtml = mergedConfig.enableHtml ?? true;\n toastRef.instance.showIcon = mergedConfig.showIcon ?? false;\n\n this.toasts.set(toastId, toastRef);\n this.appRef.attachView(toastRef.hostView);\n container.location.nativeElement.appendChild(\n toastRef.location.nativeElement\n );\n\n return { toastId };\n }\n\n private getOrCreateContainer(\n positionClass: string\n ): ComponentRef<ToastContainerComponent> {\n if (this.containerRef) {\n return this.containerRef;\n }\n\n this.containerRef = createComponent(ToastContainerComponent, {\n environmentInjector: this.appRef.injector\n });\n\n this.appRef.attachView(this.containerRef.hostView);\n const el = this.containerRef.location.nativeElement as HTMLElement;\n el.classList.add(positionClass);\n this.document.body.appendChild(el);\n return this.containerRef;\n }\n}\n","import { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n OnInit,\n inject,\n signal\n} from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { ToastConfig, ToastType } from '../toast.interface';\nimport { ToastService } from '../toast.service';\n\n@Component({\n selector: 'igo-toast',\n standalone: true,\n imports: [NgClass, MatIconModule, MatIconButton, MatProgressBar],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './toast.component.html',\n styleUrl: './toast.component.scss',\n host: {\n '[class]': 'animationState()',\n '(mouseenter)': 'onEnter()',\n '(mouseleave)': 'onLeave()',\n '(touchstart)': 'onEnter()',\n '(touchend)': 'onLeave()'\n }\n})\nexport class ToastComponent implements OnInit, OnDestroy {\n private toastService = inject(ToastService);\n private sanitizer = inject(DomSanitizer);\n\n toastId!: number;\n type!: ToastType;\n title = '';\n config!: ToastConfig;\n enableHtml = false;\n showIcon = false;\n\n private _message = '';\n safeMessage: SafeHtml = '';\n\n get message(): string {\n return this._message;\n }\n\n set message(value: string) {\n this._message = value;\n this.safeMessage = this.sanitizer.bypassSecurityTrustHtml(value);\n }\n\n progress = signal(100);\n animationState = signal<'inactive' | 'active' | 'removed'>('inactive');\n\n private timeoutId: ReturnType<typeof setTimeout> | null = null;\n private progressIntervalId: ReturnType<typeof setInterval> | null = null;\n private startTime = 0;\n private remainingTime = 0;\n private totalTimeOut = 0;\n\n ngOnInit() {\n this.animationState.set('active');\n if (!this.config.disableTimeOut) {\n this.remainingTime = this.config.timeOut ?? 10000;\n this.totalTimeOut = this.remainingTime;\n this.startTimer();\n }\n }\n\n ngOnDestroy() {\n this.clearTimers();\n }\n\n onEnter() {\n if (!this.config.disableTimeOut) {\n this.remainingTime = (this.progress() / 100) * this.totalTimeOut;\n this.clearTimers();\n }\n }\n\n onLeave() {\n if (!this.config.disableTimeOut) {\n if (!this.config.freezeProgressOnHover) {\n const extendedTimeOut = this.config.extendedTimeOut ?? 10000;\n this.remainingTime = extendedTimeOut;\n this.totalTimeOut = extendedTimeOut;\n }\n this.startTimer();\n }\n }\n\n onTap() {\n if (this.config.tapToDismiss) {\n this.remove();\n }\n }\n\n close(event: Event) {\n event.stopPropagation();\n this.remove();\n }\n\n remove() {\n this.clearTimers();\n this.animationState.set('removed');\n setTimeout(() => {\n this.toastService.removeToast(this.toastId);\n }, 300);\n }\n\n private startTimer() {\n this.startTime = Date.now();\n const duration = this.remainingTime;\n this.progress.set((duration / this.totalTimeOut) * 100);\n\n this.progressIntervalId = setInterval(() => {\n const elapsed = Date.now() - this.startTime;\n const remaining = Math.max(0, duration - elapsed);\n this.progress.set((remaining / this.totalTimeOut) * 100);\n }, 50);\n\n this.timeoutId = setTimeout(() => {\n this.remove();\n }, duration);\n }\n\n private clearTimers() {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n if (this.progressIntervalId) {\n clearInterval(this.progressIntervalId);\n this.progressIntervalId = null;\n }\n }\n}\n","<div\n class=\"igo-toast\"\n [ngClass]=\"'toast-' + type\"\n [attr.tabindex]=\"config.tapToDismiss ? '0' : null\"\n (click)=\"onTap()\"\n (keydown.enter)=\"onTap()\"\n>\n @if (showIcon) {\n <mat-icon class=\"toast-icon\">\n @switch (type) {\n @case ('success') {\n check_circle\n }\n @case ('error') {\n error\n }\n @case ('warning') {\n warning\n }\n @default {\n info\n }\n }\n </mat-icon>\n }\n <div class=\"toast-content\">\n @if (title) {\n <header class=\"toast-title\">{{ title }}</header>\n }\n @if (!enableHtml) {\n <p class=\"toast-message\">{{ message }}</p>\n } @else {\n <p class=\"toast-message\" [innerHTML]=\"safeMessage\"></p>\n }\n </div>\n @if (config.closeButton) {\n <button matIconButton class=\"toast-close-button\" (click)=\"close($event)\">\n <mat-icon>close</mat-icon>\n </button>\n }\n @if (config.progressBar && !config.disableTimeOut) {\n <mat-progress-bar mode=\"determinate\" [value]=\"progress()\" />\n }\n</div>\n","import {\n EnvironmentProviders,\n inject,\n provideAppInitializer\n} from '@angular/core';\n\nimport { ToastConfig, ToastService } from './toast';\n\n/**\n * Provides the message service with custom toast configuration.\n * Since ToastService is providedIn: 'root', this simply configures it.\n */\nexport function provideMessage(\n config?: Partial<ToastConfig>\n): EnvironmentProviders {\n return provideAppInitializer(() => {\n if (!config) {\n return;\n }\n inject(ToastService).configure(config);\n });\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\nimport { LanguageService } from '@igo2/core/language';\n\nimport { BehaviorSubject } from 'rxjs';\n\nimport { MessageType } from './message.enum';\nimport { Message, MessageOptions } from './message.interface';\nimport { ActiveToast, IndividualToastConfig, ToastService } from './toast';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MessageService {\n private configService = inject(ConfigService);\n private languageService = inject(LanguageService);\n private toastService = inject(ToastService);\n\n public messages$ = new BehaviorSubject<Message[]>([]);\n private options?: MessageOptions;\n\n constructor() {\n this.options = this.configService.getConfig('message');\n }\n\n showError(httpError: HttpErrorResponse) {\n const errorPayload = httpError.error as\n { caught?: boolean; message?: string; title?: string } | undefined;\n\n if (errorPayload && typeof errorPayload === 'object') {\n errorPayload.caught = true;\n }\n\n const message =\n typeof errorPayload?.message === 'string'\n ? errorPayload.message\n : httpError.message;\n const title =\n typeof errorPayload?.title === 'string'\n ? errorPayload.title\n : 'igo.core.message.error';\n\n return this.error(message, title);\n }\n\n message(message: Message) {\n this.messages$.next(this.messages$.value.concat([message]));\n\n const options = { ...(message.options ?? {}) } as MessageOptions;\n const currentDate = new Date();\n const fromDate = this.parseDate(options.from, new Date('1 jan 1900'));\n const toDate = this.parseDate(options.to, new Date('1 jan 3000'));\n\n options.from = fromDate;\n options.to = toDate;\n\n if (message.showIcon !== undefined) {\n options.showIcon = message.showIcon;\n }\n\n if (currentDate >= fromDate && currentDate <= toDate) {\n message = this.handleTemplate(message);\n\n if (message.text) {\n let messageShown: ActiveToast;\n switch (message.type) {\n case MessageType.SUCCESS:\n messageShown = this.success(\n message.text,\n message.title,\n options,\n message.textInterpolateParams,\n message.titleInterpolateParams\n );\n break;\n case MessageType.ERROR:\n messageShown = this.error(\n message.text,\n message.title,\n options,\n message.textInterpolateParams,\n message.titleInterpolateParams\n );\n break;\n case MessageType.INFO:\n case MessageType.SHOW:\n messageShown = this.info(\n message.text,\n message.title,\n options,\n message.textInterpolateParams,\n message.titleInterpolateParams\n );\n break;\n case MessageType.ALERT:\n case MessageType.WARNING:\n messageShown = this.alert(\n message.text,\n message.title,\n options,\n message.textInterpolateParams,\n message.titleInterpolateParams\n );\n break;\n default:\n messageShown = this.info(\n message.text,\n message.title,\n options,\n message.textInterpolateParams,\n message.titleInterpolateParams\n );\n break;\n }\n options.id = messageShown.toastId;\n message.options = options;\n }\n }\n }\n\n success(\n text: string,\n title = 'igo.core.message.success',\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n return this.handleToast(\n 'success',\n text,\n title,\n options,\n textInterpolateParams,\n titleInterpolateParams\n );\n }\n\n error(\n text: string,\n title = 'igo.core.message.error',\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n return this.handleToast(\n 'error',\n text,\n title,\n options,\n textInterpolateParams,\n titleInterpolateParams\n );\n }\n\n info(\n text: string,\n title = 'igo.core.message.info',\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n return this.handleToast(\n 'info',\n text,\n title,\n options,\n textInterpolateParams,\n titleInterpolateParams\n );\n }\n\n alert(\n text: string,\n title = 'igo.core.message.alert',\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n return this.handleToast(\n 'warning',\n text,\n title,\n options,\n textInterpolateParams,\n titleInterpolateParams\n );\n }\n\n show(\n text: string,\n title = 'igo.core.message.info',\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n return this.handleToast(\n 'info',\n text,\n title,\n options,\n textInterpolateParams,\n titleInterpolateParams\n );\n }\n\n private handleToast(\n type: 'warning' | 'info' | 'error' | 'success',\n text: string,\n title: string,\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n const translatedTextInterpolateParams = this.translateInterpolateParams(\n textInterpolateParams\n );\n const translatedTitleInterpolateParams = this.translateInterpolateParams(\n titleInterpolateParams\n );\n\n const translatedMessage = this.languageService.translate.instant(\n text,\n translatedTextInterpolateParams\n );\n const translatedTitle = this.languageService.translate.instant(\n title,\n translatedTitleInterpolateParams\n );\n\n let activeToast: ActiveToast;\n switch (type) {\n case 'success':\n activeToast = this.toastService.success(\n translatedMessage,\n translatedTitle,\n options\n );\n break;\n case 'error':\n activeToast = this.toastService.error(\n translatedMessage,\n translatedTitle,\n options\n );\n break;\n case 'info':\n activeToast = this.toastService.info(\n translatedMessage,\n translatedTitle,\n options\n );\n break;\n case 'warning':\n activeToast = this.toastService.warning(\n translatedMessage,\n translatedTitle,\n options\n );\n break;\n }\n\n return activeToast;\n }\n\n private parseDate(value: Date | string | undefined, fallback: Date): Date {\n if (!value) {\n return fallback;\n }\n\n if (value instanceof Date) {\n return value;\n }\n\n const directParse = new Date(value);\n if (!Number.isNaN(directParse.getTime())) {\n return directParse;\n }\n\n const normalizedParse = new Date(Date.parse(value.replace(/-/g, ' ')));\n return Number.isNaN(normalizedParse.getTime()) ? fallback : normalizedParse;\n }\n\n private translateInterpolateParams(\n params?: Record<string, unknown>\n ): Record<string, unknown> {\n if (!params) {\n return {};\n }\n\n return Object.keys(params).reduce(\n (acc, key) => {\n const value = params[key];\n acc[key] =\n typeof value === 'string'\n ? this.languageService.translate.instant(value)\n : value;\n return acc;\n },\n {} as Record<string, unknown>\n );\n }\n\n remove(id: number) {\n this.toastService.remove(id);\n }\n\n removeAllAreNotError() {\n for (const mess of this.messages$.value) {\n if (mess.options?.id && mess.type !== MessageType.ERROR) {\n this.remove(mess.options.id);\n }\n }\n }\n\n private handleTemplate(message: Message): Message {\n if (!this.options?.template || message.html) {\n return message;\n }\n\n let html = this.options?.template;\n html = html.replace('${text}', message.text);\n if (message.title) {\n html = html.replace('${title}', message.title);\n }\n\n message.html = undefined;\n message.text = html;\n message.title = undefined;\n return message;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"igo2-core-message.mjs","sources":["../../../packages/core/message/src/message.enum.ts","../../../packages/core/message/src/toast/toast/toast.component.ts","../../../packages/core/message/src/toast/toast/toast.component.html","../../../packages/core/message/src/toast/toast-container.component.ts","../../../packages/core/message/src/toast/toast.interface.ts","../../../packages/core/message/src/toast/toast.service.ts","../../../packages/core/message/src/message.provider.ts","../../../packages/core/message/src/message.service.ts","../../../packages/core/message/src/igo2-core-message.ts"],"sourcesContent":["export enum MessageType {\n ERROR = 'error',\n ALERT = 'warning',\n // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values\n WARNING = 'warning',\n INFO = 'info',\n SUCCESS = 'success',\n SHOW = 'show'\n}\n","import { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n OnInit,\n inject,\n output,\n signal\n} from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { ToastConfig, ToastType } from '../toast.interface';\n\n@Component({\n selector: 'igo-toast',\n standalone: true,\n imports: [NgClass, MatIconModule, MatIconButton, MatProgressBar],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './toast.component.html',\n styleUrl: './toast.component.scss',\n host: {\n '[class]': 'animationState()',\n '(mouseenter)': 'onEnter()',\n '(mouseleave)': 'onLeave()',\n '(touchstart)': 'onEnter()',\n '(touchend)': 'onLeave()'\n }\n})\nexport class ToastComponent implements OnInit, OnDestroy {\n private sanitizer = inject(DomSanitizer);\n\n readonly removed = output<number>();\n toastId!: number;\n type!: ToastType;\n title = '';\n config!: ToastConfig;\n enableHtml = false;\n showIcon = false;\n\n private _message = '';\n safeMessage: SafeHtml = '';\n\n get message(): string {\n return this._message;\n }\n\n set message(value: string) {\n this._message = value;\n this.safeMessage = this.sanitizer.bypassSecurityTrustHtml(value);\n }\n\n progress = signal(100);\n animationState = signal<'inactive' | 'active' | 'removed'>('inactive');\n\n private timeoutId: ReturnType<typeof setTimeout> | null = null;\n private progressIntervalId: ReturnType<typeof setInterval> | null = null;\n private startTime = 0;\n private remainingTime = 0;\n private totalTimeOut = 0;\n\n ngOnInit() {\n this.animationState.set('active');\n if (!this.config.disableTimeOut) {\n this.remainingTime = this.config.timeOut ?? 10000;\n this.totalTimeOut = this.remainingTime;\n this.startTimer();\n }\n }\n\n ngOnDestroy() {\n this.clearTimers();\n }\n\n onEnter() {\n if (!this.config.disableTimeOut) {\n this.remainingTime = (this.progress() / 100) * this.totalTimeOut;\n this.clearTimers();\n }\n }\n\n onLeave() {\n if (!this.config.disableTimeOut) {\n if (!this.config.freezeProgressOnHover) {\n const extendedTimeOut = this.config.extendedTimeOut ?? 10000;\n this.remainingTime = extendedTimeOut;\n this.totalTimeOut = extendedTimeOut;\n }\n this.startTimer();\n }\n }\n\n onTap() {\n if (this.config.tapToDismiss) {\n this.remove();\n }\n }\n\n close(event: Event) {\n event.stopPropagation();\n this.remove();\n }\n\n remove() {\n this.clearTimers();\n this.animationState.set('removed');\n setTimeout(() => {\n this.removed.emit(this.toastId);\n }, 300);\n }\n\n private startTimer() {\n this.startTime = Date.now();\n const duration = this.remainingTime;\n this.progress.set((duration / this.totalTimeOut) * 100);\n\n this.progressIntervalId = setInterval(() => {\n const elapsed = Date.now() - this.startTime;\n const remaining = Math.max(0, duration - elapsed);\n this.progress.set((remaining / this.totalTimeOut) * 100);\n }, 50);\n\n this.timeoutId = setTimeout(() => {\n this.remove();\n }, duration);\n }\n\n private clearTimers() {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n if (this.progressIntervalId) {\n clearInterval(this.progressIntervalId);\n this.progressIntervalId = null;\n }\n }\n}\n","<div\n class=\"igo-toast\"\n [ngClass]=\"'toast-' + type\"\n [attr.tabindex]=\"config.tapToDismiss ? '0' : null\"\n (click)=\"onTap()\"\n (keydown.enter)=\"onTap()\"\n>\n @if (showIcon) {\n <mat-icon class=\"toast-icon\">\n @switch (type) {\n @case ('success') {\n check_circle\n }\n @case ('error') {\n error\n }\n @case ('warning') {\n warning\n }\n @default {\n info\n }\n }\n </mat-icon>\n }\n <div class=\"toast-content\">\n @if (title) {\n <header class=\"toast-title\">{{ title }}</header>\n }\n @if (!enableHtml) {\n <p class=\"toast-message\">{{ message }}</p>\n } @else {\n <p class=\"toast-message\" [innerHTML]=\"safeMessage\"></p>\n }\n </div>\n @if (config.closeButton) {\n <button matIconButton class=\"toast-close-button\" (click)=\"close($event)\">\n <mat-icon>close</mat-icon>\n </button>\n }\n @if (config.progressBar && !config.disableTimeOut) {\n <mat-progress-bar mode=\"determinate\" [value]=\"progress()\" />\n }\n</div>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'igo-toast-container',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content></ng-content>`,\n styles: [\n `\n :host {\n position: fixed;\n pointer-events: none;\n z-index: 10000;\n display: flex;\n flex-direction: column;\n row-gap: 8px;\n }\n\n :host.toast-bottom-right {\n bottom: 12px;\n right: 12px;\n align-items: flex-end;\n }\n\n :host.toast-bottom-left {\n bottom: 12px;\n left: 12px;\n align-items: flex-start;\n }\n\n :host.toast-top-right {\n top: 12px;\n right: 12px;\n align-items: flex-end;\n }\n\n :host.toast-top-left {\n top: 12px;\n left: 12px;\n align-items: flex-start;\n }\n\n :host.toast-top-center {\n top: 12px;\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n }\n\n :host.toast-bottom-center {\n bottom: 12px;\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n }\n `\n ]\n})\nexport class ToastContainerComponent {}\n","export interface ToastConfig {\n timeOut: number;\n extendedTimeOut: number;\n closeButton: boolean;\n progressBar: boolean;\n tapToDismiss: boolean;\n positionClass: string;\n maxOpened: number;\n preventDuplicates: boolean;\n enableHtml: boolean;\n disableTimeOut: boolean;\n showIcon: boolean;\n freezeProgressOnHover: boolean;\n}\n\nexport type IndividualToastConfig = Partial<ToastConfig>;\n\nexport interface ToastRef {\n toastId: number;\n message: string;\n title: string;\n type: ToastType;\n config: ToastConfig;\n}\n\nexport type ToastType = 'success' | 'error' | 'info' | 'warning' | 'show';\n\nexport const DEFAULT_TOAST_CONFIG: ToastConfig = {\n timeOut: 10000,\n extendedTimeOut: 10000,\n closeButton: true,\n progressBar: true,\n tapToDismiss: true,\n positionClass: 'toast-bottom-right',\n maxOpened: 4,\n preventDuplicates: true,\n enableHtml: true,\n disableTimeOut: false,\n showIcon: false,\n freezeProgressOnHover: true\n};\n","import { DOCUMENT } from '@angular/common';\nimport {\n ApplicationRef,\n ComponentRef,\n Injectable,\n createComponent,\n inject\n} from '@angular/core';\n\nimport { ToastContainerComponent } from './toast-container.component';\nimport {\n DEFAULT_TOAST_CONFIG,\n IndividualToastConfig,\n ToastConfig,\n ToastRef,\n ToastType\n} from './toast.interface';\nimport { ToastComponent } from './toast/toast.component';\n\nexport interface ActiveToast {\n toastId: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n private appRef = inject(ApplicationRef);\n private document = inject(DOCUMENT);\n\n private toastIdCounter = 0;\n private toasts: Map<number, ComponentRef<ToastComponent>> = new Map();\n private containerRef: ComponentRef<ToastContainerComponent> | null = null;\n private config: ToastConfig = { ...DEFAULT_TOAST_CONFIG };\n private lastMessage = '';\n private lastTitle = '';\n\n configure(config: Partial<ToastConfig>) {\n this.config = { ...this.config, ...config };\n }\n\n success(\n message: string,\n title: string,\n options?: IndividualToastConfig\n ): ActiveToast {\n return this.show('success', message, title, options);\n }\n\n error(\n message: string,\n title: string,\n options?: IndividualToastConfig\n ): ActiveToast {\n return this.show('error', message, title, options);\n }\n\n info(\n message: string,\n title: string,\n options?: IndividualToastConfig\n ): ActiveToast {\n return this.show('info', message, title, options);\n }\n\n warning(\n message: string,\n title: string,\n options?: IndividualToastConfig\n ): ActiveToast {\n return this.show('warning', message, title, options);\n }\n\n remove(toastId: number) {\n const ref = this.toasts.get(toastId);\n if (ref) {\n ref.instance.remove();\n }\n }\n\n /** Called by ToastComponent when removal animation completes */\n removeToast(toastId: number) {\n const ref = this.toasts.get(toastId);\n if (ref) {\n this.appRef.detachView(ref.hostView);\n ref.destroy();\n this.toasts.delete(toastId);\n }\n if (this.toasts.size === 0 && this.containerRef) {\n this.appRef.detachView(this.containerRef.hostView);\n this.containerRef.destroy();\n this.containerRef = null;\n }\n }\n\n getActiveToasts(): ToastRef[] {\n return Array.from(this.toasts.entries()).map(([id, ref]) => ({\n toastId: id,\n message: ref.instance.message,\n title: ref.instance.title,\n type: ref.instance.type,\n config: ref.instance.config as ToastConfig\n }));\n }\n\n updateToast(toastId: number, message: string, title: string) {\n const ref = this.toasts.get(toastId);\n if (ref) {\n ref.instance.message = message;\n ref.instance.title = title;\n }\n }\n\n private show(\n type: ToastType,\n message: string,\n title: string,\n options?: IndividualToastConfig\n ): ActiveToast {\n const mergedConfig = { ...this.config, ...options };\n\n // Prevent duplicates\n if (mergedConfig.preventDuplicates) {\n if (this.lastMessage === message && this.lastTitle === title) {\n // Return last toast id\n const lastEntry = Array.from(this.toasts.entries()).pop();\n if (lastEntry) {\n return { toastId: lastEntry[0] };\n }\n }\n }\n\n // Enforce max opened\n if (mergedConfig.maxOpened && this.toasts.size >= mergedConfig.maxOpened) {\n const firstKey = this.toasts.keys().next().value!;\n this.remove(firstKey);\n }\n\n this.lastMessage = message;\n this.lastTitle = title;\n\n const toastId = ++this.toastIdCounter;\n const container = this.getOrCreateContainer(\n mergedConfig.positionClass || 'toast-bottom-right'\n );\n\n const toastRef = createComponent(ToastComponent, {\n environmentInjector: this.appRef.injector\n });\n\n toastRef.instance.toastId = toastId;\n toastRef.instance.type = type;\n toastRef.instance.message = message;\n toastRef.instance.title = title;\n toastRef.instance.config = mergedConfig;\n toastRef.instance.enableHtml = mergedConfig.enableHtml ?? true;\n toastRef.instance.showIcon = mergedConfig.showIcon ?? false;\n toastRef.instance.removed.subscribe((removedToastId) => {\n this.removeToast(removedToastId);\n });\n\n this.toasts.set(toastId, toastRef);\n this.appRef.attachView(toastRef.hostView);\n container.location.nativeElement.appendChild(\n toastRef.location.nativeElement\n );\n\n return { toastId };\n }\n\n private getOrCreateContainer(\n positionClass: string\n ): ComponentRef<ToastContainerComponent> {\n if (this.containerRef) {\n return this.containerRef;\n }\n\n this.containerRef = createComponent(ToastContainerComponent, {\n environmentInjector: this.appRef.injector\n });\n\n this.appRef.attachView(this.containerRef.hostView);\n const el = this.containerRef.location.nativeElement as HTMLElement;\n el.classList.add(positionClass);\n this.document.body.appendChild(el);\n return this.containerRef;\n }\n}\n","import {\n EnvironmentProviders,\n inject,\n provideAppInitializer\n} from '@angular/core';\n\nimport { ToastConfig, ToastService } from './toast';\n\n/**\n * Provides the message service with custom toast configuration.\n * Since ToastService is providedIn: 'root', this simply configures it.\n */\nexport function provideMessage(\n config?: Partial<ToastConfig>\n): EnvironmentProviders {\n return provideAppInitializer(() => {\n if (!config) {\n return;\n }\n inject(ToastService).configure(config);\n });\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\nimport { LanguageService } from '@igo2/core/language';\n\nimport { BehaviorSubject } from 'rxjs';\n\nimport { MessageType } from './message.enum';\nimport { Message, MessageOptions } from './message.interface';\nimport { ActiveToast, IndividualToastConfig, ToastService } from './toast';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MessageService {\n private configService = inject(ConfigService);\n private languageService = inject(LanguageService);\n private toastService = inject(ToastService);\n\n public messages$ = new BehaviorSubject<Message[]>([]);\n private options?: MessageOptions;\n\n constructor() {\n this.options = this.configService.getConfig('message');\n }\n\n showError(httpError: HttpErrorResponse) {\n const errorPayload = httpError.error as\n { caught?: boolean; message?: string; title?: string } | undefined;\n\n if (errorPayload && typeof errorPayload === 'object') {\n errorPayload.caught = true;\n }\n\n const message =\n typeof errorPayload?.message === 'string'\n ? errorPayload.message\n : httpError.message;\n const title =\n typeof errorPayload?.title === 'string'\n ? errorPayload.title\n : 'igo.core.message.error';\n\n return this.error(message, title);\n }\n\n message(message: Message) {\n this.messages$.next(this.messages$.value.concat([message]));\n\n const options = { ...(message.options ?? {}) } as MessageOptions;\n const currentDate = new Date();\n const fromDate = this.parseDate(options.from, new Date('1 jan 1900'));\n const toDate = this.parseDate(options.to, new Date('1 jan 3000'));\n\n options.from = fromDate;\n options.to = toDate;\n\n if (message.showIcon !== undefined) {\n options.showIcon = message.showIcon;\n }\n\n if (currentDate >= fromDate && currentDate <= toDate) {\n message = this.handleTemplate(message);\n\n if (message.text) {\n let messageShown: ActiveToast;\n switch (message.type) {\n case MessageType.SUCCESS:\n messageShown = this.success(\n message.text,\n message.title,\n options,\n message.textInterpolateParams,\n message.titleInterpolateParams\n );\n break;\n case MessageType.ERROR:\n messageShown = this.error(\n message.text,\n message.title,\n options,\n message.textInterpolateParams,\n message.titleInterpolateParams\n );\n break;\n case MessageType.INFO:\n case MessageType.SHOW:\n messageShown = this.info(\n message.text,\n message.title,\n options,\n message.textInterpolateParams,\n message.titleInterpolateParams\n );\n break;\n case MessageType.ALERT:\n case MessageType.WARNING:\n messageShown = this.alert(\n message.text,\n message.title,\n options,\n message.textInterpolateParams,\n message.titleInterpolateParams\n );\n break;\n default:\n messageShown = this.info(\n message.text,\n message.title,\n options,\n message.textInterpolateParams,\n message.titleInterpolateParams\n );\n break;\n }\n options.id = messageShown.toastId;\n message.options = options;\n }\n }\n }\n\n success(\n text: string,\n title = 'igo.core.message.success',\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n return this.handleToast(\n 'success',\n text,\n title,\n options,\n textInterpolateParams,\n titleInterpolateParams\n );\n }\n\n error(\n text: string,\n title = 'igo.core.message.error',\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n return this.handleToast(\n 'error',\n text,\n title,\n options,\n textInterpolateParams,\n titleInterpolateParams\n );\n }\n\n info(\n text: string,\n title = 'igo.core.message.info',\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n return this.handleToast(\n 'info',\n text,\n title,\n options,\n textInterpolateParams,\n titleInterpolateParams\n );\n }\n\n alert(\n text: string,\n title = 'igo.core.message.alert',\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n return this.handleToast(\n 'warning',\n text,\n title,\n options,\n textInterpolateParams,\n titleInterpolateParams\n );\n }\n\n show(\n text: string,\n title = 'igo.core.message.info',\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n return this.handleToast(\n 'info',\n text,\n title,\n options,\n textInterpolateParams,\n titleInterpolateParams\n );\n }\n\n private handleToast(\n type: 'warning' | 'info' | 'error' | 'success',\n text: string,\n title: string,\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n const translatedTextInterpolateParams = this.translateInterpolateParams(\n textInterpolateParams\n );\n const translatedTitleInterpolateParams = this.translateInterpolateParams(\n titleInterpolateParams\n );\n\n const translatedMessage = this.languageService.translate.instant(\n text,\n translatedTextInterpolateParams\n );\n const translatedTitle = this.languageService.translate.instant(\n title,\n translatedTitleInterpolateParams\n );\n\n let activeToast: ActiveToast;\n switch (type) {\n case 'success':\n activeToast = this.toastService.success(\n translatedMessage,\n translatedTitle,\n options\n );\n break;\n case 'error':\n activeToast = this.toastService.error(\n translatedMessage,\n translatedTitle,\n options\n );\n break;\n case 'info':\n activeToast = this.toastService.info(\n translatedMessage,\n translatedTitle,\n options\n );\n break;\n case 'warning':\n activeToast = this.toastService.warning(\n translatedMessage,\n translatedTitle,\n options\n );\n break;\n }\n\n return activeToast;\n }\n\n private parseDate(value: Date | string | undefined, fallback: Date): Date {\n if (!value) {\n return fallback;\n }\n\n if (value instanceof Date) {\n return value;\n }\n\n const directParse = new Date(value);\n if (!Number.isNaN(directParse.getTime())) {\n return directParse;\n }\n\n const normalizedParse = new Date(Date.parse(value.replace(/-/g, ' ')));\n return Number.isNaN(normalizedParse.getTime()) ? fallback : normalizedParse;\n }\n\n private translateInterpolateParams(\n params?: Record<string, unknown>\n ): Record<string, unknown> {\n if (!params) {\n return {};\n }\n\n return Object.keys(params).reduce(\n (acc, key) => {\n const value = params[key];\n acc[key] =\n typeof value === 'string'\n ? this.languageService.translate.instant(value)\n : value;\n return acc;\n },\n {} as Record<string, unknown>\n );\n }\n\n remove(id: number) {\n this.toastService.remove(id);\n }\n\n removeAllAreNotError() {\n for (const mess of this.messages$.value) {\n if (mess.options?.id && mess.type !== MessageType.ERROR) {\n this.remove(mess.options.id);\n }\n }\n }\n\n private handleTemplate(message: Message): Message {\n if (!this.options?.template || message.html) {\n return message;\n }\n\n let html = this.options?.template;\n html = html.replace('${text}', message.text);\n if (message.title) {\n html = html.replace('${title}', message.title);\n }\n\n message.html = undefined;\n message.text = html;\n message.title = undefined;\n return message;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@igo2/core",
3
- "version": "21.0.0-next.28",
3
+ "version": "21.0.0-next.29",
4
4
  "description": "IGO Library",
5
5
  "author": "IGO Community",
6
6
  "keywords": [
@@ -115,7 +115,7 @@
115
115
  "@angular/forms": "^21.0.0",
116
116
  "@angular/platform-browser": "^21.0.0",
117
117
  "@angular/router": "^21.0.0",
118
- "@igo2/utils": "^21.0.0-next.28",
118
+ "@igo2/utils": "^21.0.0-next.29",
119
119
  "@ngx-translate/core": "^17.0.0",
120
120
  "@ngx-translate/http-loader": "^17.0.0",
121
121
  "@sentry/angular": "^10.0.0",
@@ -39,8 +39,8 @@ type ToastType = 'success' | 'error' | 'info' | 'warning' | 'show';
39
39
  declare const DEFAULT_TOAST_CONFIG: ToastConfig;
40
40
 
41
41
  declare class ToastComponent implements OnInit, OnDestroy {
42
- private toastService;
43
42
  private sanitizer;
43
+ readonly removed: i0.OutputEmitterRef<number>;
44
44
  toastId: number;
45
45
  type: ToastType;
46
46
  title: string;
@@ -68,7 +68,7 @@ declare class ToastComponent implements OnInit, OnDestroy {
68
68
  private startTimer;
69
69
  private clearTimers;
70
70
  static ɵfac: i0.ɵɵFactoryDeclaration<ToastComponent, never>;
71
- static ɵcmp: i0.ɵɵComponentDeclaration<ToastComponent, "igo-toast", never, {}, {}, never, never, true, never>;
71
+ static ɵcmp: i0.ɵɵComponentDeclaration<ToastComponent, "igo-toast", never, {}, { "removed": "removed"; }, never, never, true, never>;
72
72
  }
73
73
 
74
74
  declare class ToastContainerComponent {