toast-message-display 18.0.6 → 18.0.17

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.
@@ -1,15 +1,21 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, inject, Pipe, VERSION, EventEmitter, Input, Output, Inject, ViewEncapsulation, Component, NgModule } from '@angular/core';
3
+ import * as i9 from '@angular/common';
3
4
  import { CommonModule } from '@angular/common';
4
- import { ReactiveFormsModule } from '@angular/forms';
5
+ import * as i1$1 from '@angular/forms';
6
+ import { FormBuilder, ReactiveFormsModule } from '@angular/forms';
5
7
  import * as i1 from '@angular/material/icon';
6
8
  import { MatIconModule } from '@angular/material/icon';
7
9
  import { MatSnackBar, MAT_SNACK_BAR_DATA, MatSnackBarModule } from '@angular/material/snack-bar';
8
10
  import * as i2 from '@angular/material/button';
9
11
  import { MatButtonModule } from '@angular/material/button';
12
+ import * as i4 from '@angular/material/toolbar';
10
13
  import { MatToolbarModule } from '@angular/material/toolbar';
14
+ import * as i5 from '@angular/material/menu';
11
15
  import { MatMenuModule } from '@angular/material/menu';
16
+ import * as i6 from '@angular/material/radio';
12
17
  import { MatRadioModule } from '@angular/material/radio';
18
+ import * as i7 from '@angular/material/divider';
13
19
  import { MatDividerModule } from '@angular/material/divider';
14
20
  import { DomSanitizer } from '@angular/platform-browser';
15
21
  import { take } from 'rxjs/operators';
@@ -205,6 +211,10 @@ class ToastUIComponent {
205
211
  --toast-text-color: ${this.textColor};
206
212
  `);
207
213
  }
214
+ const surface = document.querySelector('.mdc-snackbar__surface');
215
+ if (surface) {
216
+ surface.style.backgroundColor = this.color;
217
+ }
208
218
  }
209
219
  else {
210
220
  document.documentElement.style.setProperty('--toast-bg-color', this.color);
@@ -231,11 +241,11 @@ class ToastUIComponent {
231
241
  this.close.emit(options);
232
242
  }
233
243
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastUIComponent, deps: [{ token: MAT_SNACK_BAR_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
234
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ToastUIComponent, selector: "app-toast-ui", inputs: { options: "options" }, outputs: { close: "close" }, ngImport: i0, template: "<div\n class=\"toast-grid-container\"\n [class.has-icon]=\"options.icon\"\n [class.has-action]=\"options.action\"\n [style.background-color]=\"(options) ? options.color : ''\"\n >\n @if (options.icon) {\n <mat-icon\n class=\"toast-icon\"\n [style.color]=\"textColor\"\n >\n {{ options.icon }}\n </mat-icon>\n }\n\n <div\n class=\"toast-message\"\n [style.color]=\"textColor\"\n [innerHTML]=\"options.message | safeHtml\"\n >\n </div>\n\n @if (options.action) {\n <button\n class=\"toast-action-button\"\n mat-button\n (click)=\"onCloseToast(options)\"\n [style.color]=\"textColor\"\n >\n @if (options.action !== '-') {\n {{ options.action }}\n } @else {\n <mat-icon>close</mat-icon>\n }\n </button>\n }\n</div>\n", styles: [".mat-mdc-snack-bar-container .mdc-snackbar__surface{max-width:100%!important;width:100%}.cdk-overlay-pane{width:100%}.cdk-overlay-container{position:fixed;top:0;left:0;width:100%;z-index:1000}.toast-grid-container{display:grid;grid-template-columns:1fr}.toast-grid-container.has-action{grid-template-columns:1fr auto}.toast-grid-container.has-icon{grid-template-columns:minmax(0,44px) 1fr}.toast-grid-container.has-icon.has-action{grid-template-columns:minmax(0,44px) 1fr auto}.toast-grid-container>*{display:inline-flex;overflow:hidden;align-items:center}.toast-icon{margin-top:.25rem;grid-column:1;display:flex;align-items:center;justify-content:center;max-width:44px;overflow:hidden}.toast-message{word-wrap:break-word;overflow-wrap:break-word;white-space:normal;flex-grow:1}.toast-action-button{justify-self:end}\n", ".mat-mdc-snack-bar-container{--mat-snackbar-container-color: var(--toast-bg-color, #fff);--mat-mdc-snack-bar-button-color: var(--toast-text-color, #fff);--mat-snackbar-supporting-text-color: var(--toast-text-color, #000)}\n"], dependencies: [{ kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], encapsulation: i0.ViewEncapsulation.None }); }
244
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ToastUIComponent, selector: "app-toast-ui", inputs: { options: "options" }, outputs: { close: "close" }, ngImport: i0, template: "<div\n class=\"toast-grid-container\"\n [class.has-icon]=\"options.icon\"\n [class.has-action]=\"options.action\"\n >\n @if (options.icon) {\n <mat-icon\n class=\"toast-icon\"\n [style.color]=\"textColor\"\n >\n {{ options.icon }}\n </mat-icon>\n }\n\n <div\n class=\"toast-message\"\n [style.color]=\"textColor\"\n [innerHTML]=\"options.message | safeHtml\"\n >\n </div>\n\n @if (options.action) {\n <button\n class=\"toast-action-button\"\n mat-button\n (click)=\"onCloseToast(options)\"\n [style.color]=\"textColor\"\n >\n @if (options.action !== '-') {\n {{ options.action }}\n } @else {\n <mat-icon>close</mat-icon>\n }\n </button>\n }\n</div>\n", styles: [".mat-mdc-snack-bar-container .mdc-snackbar__surface{max-width:100%!important;width:100%}.mat-mdc-snackbar-surface{padding-right:0}.cdk-overlay-pane{width:100%}.cdk-overlay-container{position:fixed;top:0;left:0;width:100%;z-index:1000}.toast-grid-container{display:grid;grid-template-columns:1fr}.toast-grid-container.has-action{grid-template-columns:1fr auto}.toast-grid-container.has-icon{grid-template-columns:minmax(0,44px) 1fr}.toast-grid-container.has-icon.has-action{grid-template-columns:minmax(0,44px) 1fr auto}.toast-grid-container>*{display:inline-flex;overflow:hidden;align-items:center}.toast-icon{margin-top:.25rem;grid-column:1;display:flex;align-items:center;justify-content:center;max-width:44px;overflow:hidden}.toast-message{word-wrap:break-word;overflow-wrap:break-word;white-space:normal;flex-grow:1}.toast-action-button{justify-self:end}\n", ".mat-mdc-snack-bar-container{--mat-snackbar-container-color: var(--toast-bg-color, #fff);--mat-mdc-snack-bar-button-color: var(--toast-text-color, #fff);--mat-snackbar-supporting-text-color: var(--toast-text-color, #000)}\n"], dependencies: [{ kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], encapsulation: i0.ViewEncapsulation.None }); }
235
245
  }
236
246
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastUIComponent, decorators: [{
237
247
  type: Component,
238
- args: [{ selector: 'app-toast-ui', encapsulation: ViewEncapsulation.None, standalone: false, template: "<div\n class=\"toast-grid-container\"\n [class.has-icon]=\"options.icon\"\n [class.has-action]=\"options.action\"\n [style.background-color]=\"(options) ? options.color : ''\"\n >\n @if (options.icon) {\n <mat-icon\n class=\"toast-icon\"\n [style.color]=\"textColor\"\n >\n {{ options.icon }}\n </mat-icon>\n }\n\n <div\n class=\"toast-message\"\n [style.color]=\"textColor\"\n [innerHTML]=\"options.message | safeHtml\"\n >\n </div>\n\n @if (options.action) {\n <button\n class=\"toast-action-button\"\n mat-button\n (click)=\"onCloseToast(options)\"\n [style.color]=\"textColor\"\n >\n @if (options.action !== '-') {\n {{ options.action }}\n } @else {\n <mat-icon>close</mat-icon>\n }\n </button>\n }\n</div>\n", styles: [".mat-mdc-snack-bar-container .mdc-snackbar__surface{max-width:100%!important;width:100%}.cdk-overlay-pane{width:100%}.cdk-overlay-container{position:fixed;top:0;left:0;width:100%;z-index:1000}.toast-grid-container{display:grid;grid-template-columns:1fr}.toast-grid-container.has-action{grid-template-columns:1fr auto}.toast-grid-container.has-icon{grid-template-columns:minmax(0,44px) 1fr}.toast-grid-container.has-icon.has-action{grid-template-columns:minmax(0,44px) 1fr auto}.toast-grid-container>*{display:inline-flex;overflow:hidden;align-items:center}.toast-icon{margin-top:.25rem;grid-column:1;display:flex;align-items:center;justify-content:center;max-width:44px;overflow:hidden}.toast-message{word-wrap:break-word;overflow-wrap:break-word;white-space:normal;flex-grow:1}.toast-action-button{justify-self:end}\n", ".mat-mdc-snack-bar-container{--mat-snackbar-container-color: var(--toast-bg-color, #fff);--mat-mdc-snack-bar-button-color: var(--toast-text-color, #fff);--mat-snackbar-supporting-text-color: var(--toast-text-color, #000)}\n"] }]
248
+ args: [{ selector: 'app-toast-ui', encapsulation: ViewEncapsulation.None, standalone: false, template: "<div\n class=\"toast-grid-container\"\n [class.has-icon]=\"options.icon\"\n [class.has-action]=\"options.action\"\n >\n @if (options.icon) {\n <mat-icon\n class=\"toast-icon\"\n [style.color]=\"textColor\"\n >\n {{ options.icon }}\n </mat-icon>\n }\n\n <div\n class=\"toast-message\"\n [style.color]=\"textColor\"\n [innerHTML]=\"options.message | safeHtml\"\n >\n </div>\n\n @if (options.action) {\n <button\n class=\"toast-action-button\"\n mat-button\n (click)=\"onCloseToast(options)\"\n [style.color]=\"textColor\"\n >\n @if (options.action !== '-') {\n {{ options.action }}\n } @else {\n <mat-icon>close</mat-icon>\n }\n </button>\n }\n</div>\n", styles: [".mat-mdc-snack-bar-container .mdc-snackbar__surface{max-width:100%!important;width:100%}.mat-mdc-snackbar-surface{padding-right:0}.cdk-overlay-pane{width:100%}.cdk-overlay-container{position:fixed;top:0;left:0;width:100%;z-index:1000}.toast-grid-container{display:grid;grid-template-columns:1fr}.toast-grid-container.has-action{grid-template-columns:1fr auto}.toast-grid-container.has-icon{grid-template-columns:minmax(0,44px) 1fr}.toast-grid-container.has-icon.has-action{grid-template-columns:minmax(0,44px) 1fr auto}.toast-grid-container>*{display:inline-flex;overflow:hidden;align-items:center}.toast-icon{margin-top:.25rem;grid-column:1;display:flex;align-items:center;justify-content:center;max-width:44px;overflow:hidden}.toast-message{word-wrap:break-word;overflow-wrap:break-word;white-space:normal;flex-grow:1}.toast-action-button{justify-self:end}\n", ".mat-mdc-snack-bar-container{--mat-snackbar-container-color: var(--toast-bg-color, #fff);--mat-mdc-snack-bar-button-color: var(--toast-text-color, #fff);--mat-snackbar-supporting-text-color: var(--toast-text-color, #000)}\n"] }]
239
249
  }], ctorParameters: () => [{ type: ToastDisplay, decorators: [{
240
250
  type: Inject,
241
251
  args: [MAT_SNACK_BAR_DATA]
@@ -340,10 +350,166 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
340
350
  type: Input
341
351
  }] } });
342
352
 
353
+ class ToastMessageDisplayService {
354
+ constructor() {
355
+ this.snackBar = inject(MatSnackBar);
356
+ this.toastQueue = [];
357
+ this.isToastVisible = false;
358
+ this.defaultDuration = 3;
359
+ }
360
+ toastMessage(options = ToastDisplay.adapt(), duration, vertical) {
361
+ this.toastQueue.push({ options, duration, vertical });
362
+ this.showNextToast();
363
+ }
364
+ showNextToast() {
365
+ if (this.isToastVisible || this.toastQueue.length === 0)
366
+ return;
367
+ const { options, duration, vertical } = this.toastQueue.shift();
368
+ const vertPosition = (vertical) ? vertical : 'top';
369
+ const durationDismiss = (!options.action) ? this.defaultDuration : duration;
370
+ const displayOptions = ToastOptions.adapt({
371
+ duration: durationDismiss,
372
+ horizontalPosition: 'center',
373
+ verticalPosition: vertPosition,
374
+ data: options,
375
+ });
376
+ this.isToastVisible = true;
377
+ this.snackBarRef = this.snackBar.openFromComponent(ToastUIComponent, displayOptions);
378
+ if (this.snackBarRef) {
379
+ this.snackBarRef
380
+ .afterDismissed()
381
+ .pipe(take(1))
382
+ .subscribe(() => {
383
+ this.isToastVisible = false;
384
+ this.showNextToast();
385
+ });
386
+ }
387
+ else {
388
+ console.error('Snackbar reference is undefined. Unable to subscribe to dismissal event.');
389
+ }
390
+ }
391
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastMessageDisplayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
392
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastMessageDisplayService, providedIn: 'root' }); }
393
+ }
394
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastMessageDisplayService, decorators: [{
395
+ type: Injectable,
396
+ args: [{
397
+ providedIn: 'root'
398
+ }]
399
+ }] });
400
+
401
+ class ToastDemoComponent {
402
+ constructor() {
403
+ this.random = () => {
404
+ const typedArray = new Uint8Array(1);
405
+ const randomValue = crypto.getRandomValues(typedArray)[0];
406
+ const randomFloat = randomValue / Math.pow(2, 8);
407
+ return randomFloat;
408
+ };
409
+ this.randomNumber = (min, max) => {
410
+ return Math.floor(this.random() * max) + min;
411
+ };
412
+ this.fb = inject(FormBuilder);
413
+ this.toastMessageDisplayService = inject(ToastMessageDisplayService);
414
+ this.type = 'Basic';
415
+ this.position = this.fb.control('top');
416
+ this.icons = [
417
+ 'favorite_border',
418
+ 'dashboard',
419
+ 'event',
420
+ 'paid',
421
+ 'notifications',
422
+ 'movie_filter',
423
+ ];
424
+ this.toastSamples = [
425
+ {
426
+ message: `This is a simple toast message. This is a <span style="font-size: 22px">simple toast message</span>. This is a simple toast message. This is a simple toast message`,
427
+ color: ToastColors.ERROR,
428
+ action: "Ok"
429
+ },
430
+ {
431
+ message: 'Sample message',
432
+ color: ToastColors.INFO,
433
+ icon: this.icons[0]
434
+ },
435
+ {
436
+ message: 'Sample message',
437
+ color: ToastColors.WARN,
438
+ icon: this.icons[1]
439
+ },
440
+ {
441
+ message: `This is a simple toast message. This is a <span style="font-size: 22px">simple toast message</span>. This is a simple toast message. This is a simple toast message`,
442
+ color: ToastColors.NOTIFY,
443
+ icon: this.icons[2],
444
+ action: "Dismiss"
445
+ },
446
+ {
447
+ message: 'Sample message',
448
+ color: ToastColors.GENERAL,
449
+ action: "Dismiss"
450
+ },
451
+ {
452
+ message: `This is a simple toast message. This is a <span style="font-size: 22px">simple toast message</span>. This is a simple toast message. This is a simple toast message`,
453
+ color: ToastColors.SUCCESS,
454
+ action: "-"
455
+ },
456
+ ];
457
+ }
458
+ onSelectType(type) {
459
+ this.type = type;
460
+ }
461
+ onBasic(type, icon, action) {
462
+ switch (type) {
463
+ case 'ERROR':
464
+ this.presentToast(ToastColors.ERROR, icon, action);
465
+ break;
466
+ case 'INFO':
467
+ this.presentToast(ToastColors.INFO, icon, action);
468
+ break;
469
+ case 'WARN':
470
+ this.presentToast(ToastColors.WARN, icon, action);
471
+ break;
472
+ case 'NOTIFY':
473
+ this.presentToast(ToastColors.NOTIFY, icon, action);
474
+ break;
475
+ case 'GENERAL':
476
+ this.presentToast(ToastColors.GENERAL, icon, action);
477
+ break;
478
+ default:
479
+ this.presentToast(ToastColors.SUCCESS, icon, action);
480
+ break;
481
+ }
482
+ }
483
+ presentToast(color, icon, action) {
484
+ const options = ToastDisplay.adapt({
485
+ message: `This is a simple toast message. <span style="font-size: 22px">simple toast message</span>. This is a simple toast message. This is a simple toast message`,
486
+ color,
487
+ icon,
488
+ action
489
+ });
490
+ const toastPosition = (this.position.value === 'top') ? VerticalAlignment.TOP : VerticalAlignment.BOTTOM;
491
+ this.toastMessageDisplayService.toastMessage(options, -1, toastPosition);
492
+ }
493
+ onInline() {
494
+ const pick = this.randomNumber(0, this.toastSamples.length - 1);
495
+ this.pickToastSample = this.toastSamples[pick];
496
+ }
497
+ onClosedToast(toast) {
498
+ console.log(toast);
499
+ }
500
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastDemoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
501
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ToastDemoComponent, selector: "app-toast-display-demo", ngImport: i0, template: "<mat-toolbar style=\"display: flex;\">\n <div>Toast Message Demo</div>\n <div style=\"flex:1; text-align: end;\">\n <button\n mat-stroked-button\n [matMenuTriggerFor]=\"menu\"\n matIconPrefix\n >\n {{ type | titlecase }}\n <mat-icon>layers</mat-icon>\n </button>\n </div>\n</mat-toolbar>\n\n<mat-menu #menu=\"matMenu\">\n <button\n mat-menu-item\n (click)=\"onSelectType('basic')\"\n >\n Basic\n </button>\n <button\n mat-menu-item\n (click)=\"onSelectType('icon')\"\n >\n Icon\n </button>\n <button\n mat-menu-item\n (click)=\"onSelectType('action')\"\n >\n Action\n </button>\n</mat-menu>\n\n<div style=\"margin: 1rem;\">\n <span>\n @switch (type) {\n @case ('icon') {\n <div>\n <div style=\"display: flex; gap: 1rem; flex-direction: column;\">\n <h3 style=\"flex:1; margin-bottom: 0;\">Toast with Icon</h3>\n <div style=\"display: flex; gap: .5rem;\">\n <button\n mat-stroked-button\n (click)=\"onBasic('SUCCESS', 'favorite_border')\"\n >\n Icon - SUCCESS\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('ERROR', 'dashboard')\"\n >\n Icon - ERROR\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('INFO', 'event')\"\n >\n Icon - INFO\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN', 'paid')\"\n >\n Icon - WARN\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN', 'notifications')\"\n >\n Icon - NOTIFY\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN', 'movie_filter')\"\n >\n Icon - GENERAL\n </button>\n </div>\n </div>\n </div>\n }\n @case ('action') {\n <div>\n <div style=\"display: flex; gap: 1rem; flex-direction: column;\">\n <h3 style=\"flex:1; margin-bottom: 0;\">Toast with Icon and Action</h3>\n <div style=\"display: flex; gap: .5rem;\">\n <button\n mat-stroked-button\n (click)=\"onBasic('SUCCESS', 'favorite_border', 'Dismiss')\"\n >\n Action - SUCCESS\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('ERROR', 'dashboard', 'Dismiss')\"\n >\n Action - ERROR\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('INFO', 'event', 'Dismiss')\"\n >\n Action - INFO\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN', 'paid', 'Dismiss')\"\n >\n Action - WARN\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('NOTIFY', 'notifications', 'Dismiss')\"\n >\n Action - NOTIFY\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('GENERAL', 'movie_filter', 'Dismiss')\"\n >\n Action - GENERAL\n </button>\n </div>\n </div>\n </div>\n }\n @default {\n <div>\n <div style=\"display: flex; gap: 1rem; flex-direction: column;\">\n <h3 style=\"flex:1; margin-bottom: 0;\">Basic Toast</h3>\n <div style=\"display: flex; gap: .5rem;\">\n <button\n mat-stroked-button\n (click)=\"onBasic('SUCCESS')\"\n >\n Basic - SUCCESS\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('ERROR')\"\n >\n Basic - ERROR\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('INFO')\"\n >\n Basic - INFO\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN')\"\n >\n Basic - WARN\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('NOTIFY')\"\n >\n Basic - NOTIFY\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('GENERAL')\"\n >\n Basic - GENERAL\n </button>\n </div>\n </div>\n </div>\n }\n }\n </span>\n <div style=\"display: flex; margin-top: 1rem;\">\n <mat-radio-group [formControl]=\"position\" style=\"display: flex; gap: 2rem\">\n <mat-radio-button value=\"top\">Top Position</mat-radio-button>\n <mat-radio-button value=\"bottom\">Bottom Position</mat-radio-button>\n </mat-radio-group>\n </div>\n</div>\n\n<div style=\"margin-top: 1rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n</div>\n\n<div style=\"margin: 1rem;\">\n <button mat-stroked-button (click)=\"onInline()\" style=\"margin-bottom: 2rem;\">\n Add Inline Toast Message\n </button>\n <app-toast-message-display-inline\n [toast]=\"pickToastSample\"\n [duration]=\"5\"\n (close)=\"onClosedToast($event)\"\n ></app-toast-message-display-inline>\n</div>\n", styles: [".bold{font-size:22px;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i6.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i6.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "component", type: i7.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: ToastMessageInlineComponent, selector: "app-toast-message-display-inline", inputs: ["toast", "duration", "position"], outputs: ["close"] }, { kind: "pipe", type: i9.TitleCasePipe, name: "titlecase" }] }); }
502
+ }
503
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastDemoComponent, decorators: [{
504
+ type: Component,
505
+ args: [{ selector: 'app-toast-display-demo', standalone: false, template: "<mat-toolbar style=\"display: flex;\">\n <div>Toast Message Demo</div>\n <div style=\"flex:1; text-align: end;\">\n <button\n mat-stroked-button\n [matMenuTriggerFor]=\"menu\"\n matIconPrefix\n >\n {{ type | titlecase }}\n <mat-icon>layers</mat-icon>\n </button>\n </div>\n</mat-toolbar>\n\n<mat-menu #menu=\"matMenu\">\n <button\n mat-menu-item\n (click)=\"onSelectType('basic')\"\n >\n Basic\n </button>\n <button\n mat-menu-item\n (click)=\"onSelectType('icon')\"\n >\n Icon\n </button>\n <button\n mat-menu-item\n (click)=\"onSelectType('action')\"\n >\n Action\n </button>\n</mat-menu>\n\n<div style=\"margin: 1rem;\">\n <span>\n @switch (type) {\n @case ('icon') {\n <div>\n <div style=\"display: flex; gap: 1rem; flex-direction: column;\">\n <h3 style=\"flex:1; margin-bottom: 0;\">Toast with Icon</h3>\n <div style=\"display: flex; gap: .5rem;\">\n <button\n mat-stroked-button\n (click)=\"onBasic('SUCCESS', 'favorite_border')\"\n >\n Icon - SUCCESS\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('ERROR', 'dashboard')\"\n >\n Icon - ERROR\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('INFO', 'event')\"\n >\n Icon - INFO\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN', 'paid')\"\n >\n Icon - WARN\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN', 'notifications')\"\n >\n Icon - NOTIFY\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN', 'movie_filter')\"\n >\n Icon - GENERAL\n </button>\n </div>\n </div>\n </div>\n }\n @case ('action') {\n <div>\n <div style=\"display: flex; gap: 1rem; flex-direction: column;\">\n <h3 style=\"flex:1; margin-bottom: 0;\">Toast with Icon and Action</h3>\n <div style=\"display: flex; gap: .5rem;\">\n <button\n mat-stroked-button\n (click)=\"onBasic('SUCCESS', 'favorite_border', 'Dismiss')\"\n >\n Action - SUCCESS\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('ERROR', 'dashboard', 'Dismiss')\"\n >\n Action - ERROR\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('INFO', 'event', 'Dismiss')\"\n >\n Action - INFO\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN', 'paid', 'Dismiss')\"\n >\n Action - WARN\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('NOTIFY', 'notifications', 'Dismiss')\"\n >\n Action - NOTIFY\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('GENERAL', 'movie_filter', 'Dismiss')\"\n >\n Action - GENERAL\n </button>\n </div>\n </div>\n </div>\n }\n @default {\n <div>\n <div style=\"display: flex; gap: 1rem; flex-direction: column;\">\n <h3 style=\"flex:1; margin-bottom: 0;\">Basic Toast</h3>\n <div style=\"display: flex; gap: .5rem;\">\n <button\n mat-stroked-button\n (click)=\"onBasic('SUCCESS')\"\n >\n Basic - SUCCESS\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('ERROR')\"\n >\n Basic - ERROR\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('INFO')\"\n >\n Basic - INFO\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN')\"\n >\n Basic - WARN\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('NOTIFY')\"\n >\n Basic - NOTIFY\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('GENERAL')\"\n >\n Basic - GENERAL\n </button>\n </div>\n </div>\n </div>\n }\n }\n </span>\n <div style=\"display: flex; margin-top: 1rem;\">\n <mat-radio-group [formControl]=\"position\" style=\"display: flex; gap: 2rem\">\n <mat-radio-button value=\"top\">Top Position</mat-radio-button>\n <mat-radio-button value=\"bottom\">Bottom Position</mat-radio-button>\n </mat-radio-group>\n </div>\n</div>\n\n<div style=\"margin-top: 1rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n</div>\n\n<div style=\"margin: 1rem;\">\n <button mat-stroked-button (click)=\"onInline()\" style=\"margin-bottom: 2rem;\">\n Add Inline Toast Message\n </button>\n <app-toast-message-display-inline\n [toast]=\"pickToastSample\"\n [duration]=\"5\"\n (close)=\"onClosedToast($event)\"\n ></app-toast-message-display-inline>\n</div>\n", styles: [".bold{font-size:22px;font-weight:700}\n"] }]
506
+ }] });
507
+
343
508
  class ToastMessageDisplayModule {
344
509
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastMessageDisplayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
345
510
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: ToastMessageDisplayModule, declarations: [SafeHtmlPipe,
346
511
  ToastUIComponent,
512
+ ToastDemoComponent,
347
513
  ToastMessageInlineComponent], imports: [CommonModule,
348
514
  ReactiveFormsModule,
349
515
  MatIconModule,
@@ -353,6 +519,7 @@ class ToastMessageDisplayModule {
353
519
  MatMenuModule,
354
520
  MatRadioModule,
355
521
  MatDividerModule], exports: [ToastUIComponent,
522
+ ToastDemoComponent,
356
523
  ToastMessageInlineComponent] }); }
357
524
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastMessageDisplayModule, imports: [CommonModule,
358
525
  ReactiveFormsModule,
@@ -381,63 +548,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
381
548
  declarations: [
382
549
  SafeHtmlPipe,
383
550
  ToastUIComponent,
551
+ ToastDemoComponent,
384
552
  ToastMessageInlineComponent,
385
553
  ],
386
554
  exports: [
387
555
  ToastUIComponent,
556
+ ToastDemoComponent,
388
557
  ToastMessageInlineComponent,
389
558
  ],
390
559
  }]
391
560
  }] });
392
561
 
393
- class ToastMessageDisplayService {
394
- constructor() {
395
- this.snackBar = inject(MatSnackBar);
396
- this.toastQueue = [];
397
- this.isToastVisible = false;
398
- this.defaultDuration = 3;
399
- }
400
- toastMessage(options = ToastDisplay.adapt(), duration, vertical) {
401
- this.toastQueue.push({ options, duration, vertical });
402
- this.showNextToast();
403
- }
404
- showNextToast() {
405
- if (this.isToastVisible || this.toastQueue.length === 0)
406
- return;
407
- const { options, duration, vertical } = this.toastQueue.shift();
408
- const vertPosition = (vertical) ? vertical : 'top';
409
- const durationDismiss = (!options.action) ? this.defaultDuration : duration;
410
- const displayOptions = ToastOptions.adapt({
411
- duration: durationDismiss,
412
- horizontalPosition: 'center',
413
- verticalPosition: vertPosition,
414
- data: options,
415
- });
416
- this.isToastVisible = true;
417
- this.snackBarRef = this.snackBar.openFromComponent(ToastUIComponent, displayOptions);
418
- if (this.snackBarRef) {
419
- this.snackBarRef
420
- .afterDismissed()
421
- .pipe(take(1))
422
- .subscribe(() => {
423
- this.isToastVisible = false;
424
- this.showNextToast();
425
- });
426
- }
427
- else {
428
- console.error('Snackbar reference is undefined. Unable to subscribe to dismissal event.');
429
- }
430
- }
431
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastMessageDisplayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
432
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastMessageDisplayService, providedIn: 'root' }); }
433
- }
434
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToastMessageDisplayService, decorators: [{
435
- type: Injectable,
436
- args: [{
437
- providedIn: 'root'
438
- }]
439
- }] });
440
-
441
562
  /*
442
563
  * Public API Surface of toast-message
443
564
  */
@@ -446,5 +567,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
446
567
  * Generated bundle index. Do not edit.
447
568
  */
448
569
 
449
- export { HorizontalAlignment, ToastColors, ToastDisplay, ToastMessage, ToastMessageDisplayModule, ToastMessageDisplayService, ToastMessageInlineComponent, ToastOptions, ToastUIComponent, VerticalAlignment };
570
+ export { HorizontalAlignment, ToastColors, ToastDemoComponent, ToastDisplay, ToastMessage, ToastMessageDisplayModule, ToastMessageDisplayService, ToastMessageInlineComponent, ToastOptions, ToastUIComponent, VerticalAlignment };
450
571
  //# sourceMappingURL=toast-message-display.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"toast-message-display.mjs","sources":["../../../projects/toast-message-display/src/lib/models/toast-colors.enum.ts","../../../projects/toast-message-display/src/lib/models/toast-display-model.ts","../../../projects/toast-message-display/src/lib/utils/color-conversion.service.ts","../../../projects/toast-message-display/src/lib/utils/text-color.service.ts","../../../projects/toast-message-display/src/lib/pipes/safe-html.pipe.ts","../../../projects/toast-message-display/src/lib/toast-ui/toast-ui.component.ts","../../../projects/toast-message-display/src/lib/toast-ui/toast-ui.component.html","../../../projects/toast-message-display/src/lib/models/horizontal-alignment.enum.ts","../../../projects/toast-message-display/src/lib/models/vertical-alignment.enum.ts","../../../projects/toast-message-display/src/lib/models/toast-message.model.ts","../../../projects/toast-message-display/src/lib/models/toast-options.model.ts","../../../projects/toast-message-display/src/lib/toast-message-inline/toast-message-inline.component.ts","../../../projects/toast-message-display/src/lib/toast-message-inline/toast-message-inline.component.html","../../../projects/toast-message-display/src/lib/toast-message.module.ts","../../../projects/toast-message-display/src/lib/services/toast-message.service.ts","../../../projects/toast-message-display/src/public-api.ts","../../../projects/toast-message-display/src/toast-message-display.ts"],"sourcesContent":["export enum ToastColors {\n SUCCESS = '#006B31', // green\n ERROR = '#CC0000', // red\n INFO = '#02559F', // grey\n WARN = '#FFC20E', // orange\n NOTIFY = '#080808', // black\n GENERAL = '#f5f5f5', // light\n}\n","import { ToastColors } from \"./toast-colors.enum\";\n\nexport interface ToastDisplayInterface {\n id?: string;\n message: string;\n action?: string;\n color: ToastColors;\n icon?: string;\n}\n\nexport class ToastDisplay implements ToastDisplayInterface {\n\n constructor(\n public id?: string,\n public message = 'Sample message',\n public action?: string,\n public color = ToastColors.INFO,\n public icon?: string,\n ) {}\n\n static adapt(item?: any) {\n return new ToastDisplay(\n (item?.id) ? item.id : this.randomNumbers(8),\n item?.message,\n item?.action,\n item?.color,\n item?.icon,\n );\n }\n\n static randomNumbers(length: number) {\n return this.generateRandom('0123456789', length)\n }\n\n static generateRandom(randomChars: string, length: number) {\n\n var result = ''\n for ( var i = 0; i < length; i++ ) {\n result += randomChars.charAt(Math.floor(Math.random() * randomChars.length))\n }\n return result\n\n }\n\n}\n","import { Injectable } from '@angular/core'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ColorConversionService {\r\n\r\n rgbToHex(rgb: number[]): string {\r\n const [r, g, b] = rgb\r\n const componentToHex = (c: number) => {\r\n const hex = c.toString(16)\r\n return hex.length === 1 ? \"0\" + hex : hex\r\n }\r\n const hexR = componentToHex(r)\r\n const hexG = componentToHex(g)\r\n const hexB = componentToHex(b)\r\n return \"#\" + hexR + hexG + hexB\r\n }\r\n\r\n hexToRgb(hex: string) {\r\n\r\n hex = (hex.length === 3) ? hex + hex : hex\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\r\n\r\n return result ? [\r\n parseInt(result[1], 16),\r\n parseInt(result[2], 16),\r\n parseInt(result[3], 16)\r\n ] : []\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { ColorConversionService } from './color-conversion.service'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TextColorService {\r\n\r\n constructor(\r\n private colorConversionService: ColorConversionService\r\n ) {}\r\n\r\n /**\r\n * Determines the appropriate text color (light or dark) based on the background color.\r\n *\r\n * @param bgColor - The background color to use for the calculation.\r\n * @param lightColor - The light color to use if the background is dark.\r\n * @param darkColor - The dark color to use if the background is light.\r\n * @returns The appropriate text color (light or dark) based on the background color.\r\n */\r\n textColorForBgColor(bgColor: string, lightColor: string, darkColor: string) {\r\n\r\n const UIColors = this.fixColor(bgColor)\r\n\r\n const r = UIColors[0]\r\n const g = UIColors[1]\r\n const b = UIColors[2]\r\n\r\n return ((r*0.299 + g*0.587 + b*0.114) > 149) ? darkColor : lightColor;\r\n\r\n }\r\n\r\n /**\r\n * Determines whether the first color is darker than the second color.\r\n *\r\n * @param color1 - The first color to compare.\r\n * @param color2 - The second color to compare.\r\n * @returns The darker of the two colors.\r\n */\r\n isColorDarker(color1: string, color2: string) {\r\n const newColor1 = this.fixColor(color1);\r\n const newColor2 = this.fixColor(color2);\r\n\r\n const luminance1 = this.calculateLuminance(\r\n newColor1[0],\r\n newColor1[1],\r\n newColor1[2]\r\n );\r\n const luminance2 = this.calculateLuminance(\r\n newColor2[0],\r\n newColor2[1],\r\n newColor2[2]\r\n );\r\n\r\n return luminance1 > luminance2 ? color2 : color1;\r\n }\r\n\r\n calculateLuminance(r: number, g: number, b: number): number {\r\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\r\n }\r\n\r\n /**\r\n * Fixes the provided color string by ensuring it is in a valid hexadecimal format.\r\n * If the input color is a hexadecimal string, it will be normalized to a 6-digit format.\r\n * If the input color is not a hexadecimal string, it will be converted to an RGB array.\r\n *\r\n * @param color - The color string to be fixed.\r\n * @returns An array of RGB values, or the normalized hexadecimal color string.\r\n */\r\n fixColor(color: string) {\r\n let newColor = color;\r\n\r\n if (color.includes(\"#\")) {\r\n newColor = color.slice(1);\r\n newColor =\r\n newColor.length === 3\r\n ? \"#\" +\r\n newColor\r\n .split(\"\")\r\n .map((hex) => hex + hex)\r\n .join(\"\")\r\n : \"#\" + newColor;\r\n } else {\r\n newColor = this.standardize_color(color);\r\n }\r\n\r\n const Reg_Exp = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\r\n const colorIsHex = Reg_Exp.test(newColor);\r\n\r\n const UIColors = colorIsHex\r\n ? this.colorConversionService.hexToRgb(newColor)\r\n : newColor.match(/\\d+/g)?.map((item) => parseInt(item)) || [];\r\n\r\n return UIColors;\r\n }\r\n\r\n /**\r\n * Converts the color representation of the provided string into HEX value.\r\n *\r\n * @param str - The color string to be standardized - 'whitesmoke'.\r\n * @returns The standardized color string - #DEDEDE.\r\n */\r\n standardize_color(str: string): string {\r\n const ctx = document.createElement(\"canvas\").getContext(\"2d\");\r\n\r\n if (ctx) {\r\n ctx.fillStyle = str;\r\n }\r\n\r\n return ctx?.fillStyle as string;\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport {DomSanitizer} from \"@angular/platform-browser\";\n\n@Pipe({\n name: 'safeHtml',\n standalone: false\n})\nexport class SafeHtmlPipe implements PipeTransform {\n\n private sanitizer = inject(DomSanitizer)\n\n transform(html: string) {\n return this.sanitizer.bypassSecurityTrustHtml(html)\n }\n\n}\n","import { Component, EventEmitter, Inject, inject, Input, OnInit, Output, VERSION, ViewEncapsulation } from '@angular/core';\nimport { MAT_SNACK_BAR_DATA, MatSnackBar } from '@angular/material/snack-bar';\n\nimport { ToastDisplay } from '../models/toast-display-model';\nimport { TextColorService } from '../utils';\n\n@Component({\n selector: 'app-toast-ui',\n templateUrl: './toast-ui.component.html',\n styleUrls: ['./toast-ui.component.scss'],\n encapsulation: ViewEncapsulation.None,\n styles: [`\n .mat-mdc-snack-bar-container {\n --mat-snackbar-container-color: var(--toast-bg-color, #fff);\n --mat-mdc-snack-bar-button-color: var(--toast-text-color, #fff);\n --mat-snackbar-supporting-text-color: var(--toast-text-color, #000);\n }\n `],\n standalone: false\n})\nexport class ToastUIComponent implements OnInit {\n\n ngVersion = parseInt(VERSION.full.split('.')[0], 10)\n\n @Output() close = new EventEmitter<ToastDisplay>();\n\n textColorService = inject(TextColorService);\n private snackBar = inject(MatSnackBar);\n\n @Input() options = ToastDisplay.adapt();\n\n constructor(\n @Inject(MAT_SNACK_BAR_DATA)\n public data: ToastDisplay\n ) {\n this.options = ToastDisplay.adapt(data)\n }\n\n ngOnInit() {\n\n if (this.ngVersion >= 15) {\n\n const hostElement = document.querySelector('.mat-mdc-snack-bar-container')\n\n if (hostElement) {\n hostElement.setAttribute('style', `\n --toast-bg-color: ${this.color};\n --toast-text-color: ${this.textColor};\n `)\n }\n\n } else {\n\n document.documentElement.style.setProperty('--toast-bg-color', this.color);\n document.documentElement.style.setProperty('--toast-text-color', this.textColor);\n\n const hostElement = document.querySelector('.mat-snack-bar-container') as HTMLElement;\n\n if (hostElement) {\n hostElement.style.backgroundColor = this.color;\n hostElement.style.color = this.textColor;\n\n const actionButton = hostElement.querySelector('.mat-button, .mat-snack-bar-action') as HTMLElement;\n if (actionButton) {\n actionButton.style.color = this.textColor;\n }\n }\n\n }\n\n }\n\n get color() {\n return this.options.color || '#2196f3';\n }\n\n get textColor() {\n return this.textColorService.textColorForBgColor(\n this.color,\n '#FFFFFF',\n '#000000'\n );\n }\n\n onCloseToast(options?: ToastDisplay) {\n this.snackBar.dismiss()\n this.close.emit(options)\n }\n}\n","<div\n class=\"toast-grid-container\"\n [class.has-icon]=\"options.icon\"\n [class.has-action]=\"options.action\"\n [style.background-color]=\"(options) ? options.color : ''\"\n >\n @if (options.icon) {\n <mat-icon\n class=\"toast-icon\"\n [style.color]=\"textColor\"\n >\n {{ options.icon }}\n </mat-icon>\n }\n\n <div\n class=\"toast-message\"\n [style.color]=\"textColor\"\n [innerHTML]=\"options.message | safeHtml\"\n >\n </div>\n\n @if (options.action) {\n <button\n class=\"toast-action-button\"\n mat-button\n (click)=\"onCloseToast(options)\"\n [style.color]=\"textColor\"\n >\n @if (options.action !== '-') {\n {{ options.action }}\n } @else {\n <mat-icon>close</mat-icon>\n }\n </button>\n }\n</div>\n","export enum HorizontalAlignment {\n LEFT = 'left',\n RIGHT = 'right',\n CENTER = 'center',\n}\n","export enum VerticalAlignment {\n TOP = 'top',\n BOTTOM = 'bottom',\n}\n","export interface ToastMessageInterface {\n error: string;\n action: string;\n icon: string;\n}\n\nexport class ToastMessage implements ToastMessageInterface {\n constructor(\n public error = '',\n public action = '',\n public icon = 'error',\n ) {}\n\n static adapt(item?: any): ToastMessageInterface {\n return new ToastMessage(\n item?.error,\n item?.action,\n item?.icon,\n )\n\n }\n}\n","import { MatSnackBarVerticalPosition } from \"@angular/material/snack-bar\";\nimport { HorizontalAlignment } from \"./horizontal-alignment.enum\";\nimport { ToastDisplay } from \"./toast-display-model\";\nimport { VerticalAlignment } from \"./vertical-alignment.enum\";\n\nexport interface ToastOptionsInterface {\n duration?: number\n horizontalPosition?: HorizontalAlignment\n verticalPosition?: MatSnackBarVerticalPosition\n data?: ToastDisplay\n}\n\nexport class ToastOptions implements ToastOptionsInterface {\n\n constructor(\n public duration?: number,\n public horizontalPosition = HorizontalAlignment.CENTER,\n public verticalPosition = VerticalAlignment.TOP,\n public data?: ToastDisplay\n ) {}\n\n static adapt(item?: any): ToastOptionsInterface {\n\n const duration = item?.duration ? item.duration * 1000 : item?.duration;\n\n return new ToastOptions(\n duration,\n item?.horizontalPosition,\n item?.verticalPosition,\n item?.data ? ToastDisplay.adapt(item.data) : ToastDisplay.adapt()\n )\n }\n\n}\n","import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { TextColorService } from '../utils';\nimport { ToastDisplay, VerticalAlignment } from '../models';\n\n@Component({\n selector: 'app-toast-message-display-inline',\n templateUrl: './toast-message-inline.component.html',\n styleUrls: ['./toast-message-inline.component.scss'],\n standalone: false\n})\nexport class ToastMessageInlineComponent {\n\n @Output() close = new EventEmitter<ToastDisplay>();\n\n textColorService = inject(TextColorService)\n\n toastList: ToastDisplay[] = []\n\n dismissToasts: any[] = []\n\n @Input() set toast(value: any) {\n\n if (!value) return\n const toast = ToastDisplay.adapt(value)\n\n if (!toast.action) {\n this.dismissToasts.push(toast)\n this.expireTime(toast, this.duration)\n }\n\n this.toastList.push(toast)\n\n }\n\n get option() {\n return (this.toastList.length > 0) ? this.toastList[0] : null\n }\n\n @Input() duration = -1\n @Input() position: VerticalAlignment = VerticalAlignment.TOP\n\n get color() {\n return (this.option) ? this.option.color : ''\n }\n\n get textColor() {\n return (this.option) ? this.textColorService.textColorForBgColor(this.option.color, '#FFFFFF', '#000000') : ''\n }\n\n onCloseToast(toast?: ToastDisplay) {\n this.toastList = this.toastList.filter(item => item.id !== toast?.id)\n this.close.emit(toast)\n }\n\n expireTime(toast: any, duration: number) {\n if (duration <= 0) return\n const boundRemove = this.removeToast.bind(this, toast)\n setTimeout(boundRemove, duration * 1000)\n }\n\n removeToast(toast: any) {\n this.dismissToasts = this.dismissToasts.filter(t => t.id !== toast.id)\n this.toastList = this.toastList.filter(t => t.id !== toast.id)\n }\n\n}\n","<div class=\"toast-inline-list\" [class.position-bottom]=\"position === 'bottom'\">\n @for (toast of toastList; track toast) {\n <div [style.background-color]=\"toast.color\" class=\"inline\">\n <app-toast-ui\n [options]=\"toast\"\n class=\"toast-inline-item\"\n (close)=\"onCloseToast(toast)\"\n ></app-toast-ui>\n </div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatDividerModule } from '@angular/material/divider';\n\nimport { ToastUIComponent } from './toast-ui/toast-ui.component';\nimport { ToastMessageInlineComponent } from './toast-message-inline/toast-message-inline.component';\nimport { SafeHtmlPipe } from './pipes/safe-html.pipe';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatIconModule,\n MatSnackBarModule,\n MatButtonModule,\n MatToolbarModule,\n MatMenuModule,\n MatRadioModule,\n MatDividerModule,\n ],\n declarations: [\n SafeHtmlPipe,\n ToastUIComponent,\n ToastMessageInlineComponent,\n ],\n exports: [\n ToastUIComponent,\n ToastMessageInlineComponent,\n ],\n})\nexport class ToastMessageDisplayModule { }\n","import { inject, Injectable } from '@angular/core';\nimport { MatSnackBar, MatSnackBarRef, MatSnackBarVerticalPosition } from '@angular/material/snack-bar';\nimport { ToastUIComponent } from '../toast-ui/toast-ui.component';\nimport { ToastOptions } from '../models/toast-options.model';\nimport { VerticalAlignment } from '../models/vertical-alignment.enum';\nimport { ToastDisplay } from '../models/toast-display-model';\nimport { take } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ToastMessageDisplayService {\n\n private snackBar = inject(MatSnackBar);\n\n private toastQueue: { options: ToastDisplay, duration?: number, vertical?: VerticalAlignment }[] = [];\n private isToastVisible = false;\n\n defaultDuration = 3;\n\n snackBarRef: MatSnackBarRef<any> | undefined;\n\n toastMessage(options = ToastDisplay.adapt(), duration?: number, vertical?: VerticalAlignment) {\n this.toastQueue.push({ options, duration, vertical });\n this.showNextToast();\n }\n\n private showNextToast() {\n\n if (this.isToastVisible || this.toastQueue.length === 0) return\n\n const { options, duration, vertical } = this.toastQueue.shift()!\n\n const vertPosition: MatSnackBarVerticalPosition = (vertical) ? vertical : 'top'\n\n const durationDismiss = (!options.action) ? this.defaultDuration : duration\n\n const displayOptions = ToastOptions.adapt({\n duration: durationDismiss,\n horizontalPosition: 'center',\n verticalPosition: vertPosition,\n data: options,\n })\n\n this.isToastVisible = true;\n this.snackBarRef = this.snackBar.openFromComponent(ToastUIComponent, displayOptions);\n\n if (this.snackBarRef) {\n this.snackBarRef\n .afterDismissed()\n .pipe(take(1))\n .subscribe(() => {\n this.isToastVisible = false;\n this.showNextToast();\n });\n } else {\n console.error('Snackbar reference is undefined. Unable to subscribe to dismissal event.');\n }\n\n }\n}\n","/*\n * Public API Surface of toast-message\n */\n\nexport * from \"./lib/toast-message.module\"\nexport * from \"./lib/toast-ui/toast-ui.component\"\n\nexport * from './lib/models';\n\nexport * from './lib/toast-message-inline/toast-message-inline.component';\n\nexport * from './lib/services/toast-message.service'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ColorConversionService","i3.SafeHtmlPipe","i1.ToastUIComponent"],"mappings":"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"}
1
+ {"version":3,"file":"toast-message-display.mjs","sources":["../../../projects/toast-message-display/src/lib/models/toast-colors.enum.ts","../../../projects/toast-message-display/src/lib/models/toast-display-model.ts","../../../projects/toast-message-display/src/lib/utils/color-conversion.service.ts","../../../projects/toast-message-display/src/lib/utils/text-color.service.ts","../../../projects/toast-message-display/src/lib/pipes/safe-html.pipe.ts","../../../projects/toast-message-display/src/lib/toast-ui/toast-ui.component.ts","../../../projects/toast-message-display/src/lib/toast-ui/toast-ui.component.html","../../../projects/toast-message-display/src/lib/models/horizontal-alignment.enum.ts","../../../projects/toast-message-display/src/lib/models/vertical-alignment.enum.ts","../../../projects/toast-message-display/src/lib/models/toast-message.model.ts","../../../projects/toast-message-display/src/lib/models/toast-options.model.ts","../../../projects/toast-message-display/src/lib/toast-message-inline/toast-message-inline.component.ts","../../../projects/toast-message-display/src/lib/toast-message-inline/toast-message-inline.component.html","../../../projects/toast-message-display/src/lib/services/toast-message.service.ts","../../../projects/toast-message-display/src/lib/toast-demo/toast-demo.component.ts","../../../projects/toast-message-display/src/lib/toast-demo/toast-demo.component.html","../../../projects/toast-message-display/src/lib/toast-message.module.ts","../../../projects/toast-message-display/src/public-api.ts","../../../projects/toast-message-display/src/toast-message-display.ts"],"sourcesContent":["export enum ToastColors {\n SUCCESS = '#006B31', // green\n ERROR = '#CC0000', // red\n INFO = '#02559F', // grey\n WARN = '#FFC20E', // orange\n NOTIFY = '#080808', // black\n GENERAL = '#f5f5f5', // light\n}\n","import { ToastColors } from \"./toast-colors.enum\";\n\nexport interface ToastDisplayInterface {\n id?: string;\n message: string;\n action?: string;\n color: ToastColors;\n icon?: string;\n}\n\nexport class ToastDisplay implements ToastDisplayInterface {\n\n constructor(\n public id?: string,\n public message = 'Sample message',\n public action?: string,\n public color = ToastColors.INFO,\n public icon?: string,\n ) {}\n\n static adapt(item?: any) {\n return new ToastDisplay(\n (item?.id) ? item.id : this.randomNumbers(8),\n item?.message,\n item?.action,\n item?.color,\n item?.icon,\n );\n }\n\n static randomNumbers(length: number) {\n return this.generateRandom('0123456789', length)\n }\n\n static generateRandom(randomChars: string, length: number) {\n\n var result = ''\n for ( var i = 0; i < length; i++ ) {\n result += randomChars.charAt(Math.floor(Math.random() * randomChars.length))\n }\n return result\n\n }\n\n}\n","import { Injectable } from '@angular/core'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ColorConversionService {\r\n\r\n rgbToHex(rgb: number[]): string {\r\n const [r, g, b] = rgb\r\n const componentToHex = (c: number) => {\r\n const hex = c.toString(16)\r\n return hex.length === 1 ? \"0\" + hex : hex\r\n }\r\n const hexR = componentToHex(r)\r\n const hexG = componentToHex(g)\r\n const hexB = componentToHex(b)\r\n return \"#\" + hexR + hexG + hexB\r\n }\r\n\r\n hexToRgb(hex: string) {\r\n\r\n hex = (hex.length === 3) ? hex + hex : hex\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\r\n\r\n return result ? [\r\n parseInt(result[1], 16),\r\n parseInt(result[2], 16),\r\n parseInt(result[3], 16)\r\n ] : []\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { ColorConversionService } from './color-conversion.service'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TextColorService {\r\n\r\n constructor(\r\n private colorConversionService: ColorConversionService\r\n ) {}\r\n\r\n /**\r\n * Determines the appropriate text color (light or dark) based on the background color.\r\n *\r\n * @param bgColor - The background color to use for the calculation.\r\n * @param lightColor - The light color to use if the background is dark.\r\n * @param darkColor - The dark color to use if the background is light.\r\n * @returns The appropriate text color (light or dark) based on the background color.\r\n */\r\n textColorForBgColor(bgColor: string, lightColor: string, darkColor: string) {\r\n\r\n const UIColors = this.fixColor(bgColor)\r\n\r\n const r = UIColors[0]\r\n const g = UIColors[1]\r\n const b = UIColors[2]\r\n\r\n return ((r*0.299 + g*0.587 + b*0.114) > 149) ? darkColor : lightColor;\r\n\r\n }\r\n\r\n /**\r\n * Determines whether the first color is darker than the second color.\r\n *\r\n * @param color1 - The first color to compare.\r\n * @param color2 - The second color to compare.\r\n * @returns The darker of the two colors.\r\n */\r\n isColorDarker(color1: string, color2: string) {\r\n const newColor1 = this.fixColor(color1);\r\n const newColor2 = this.fixColor(color2);\r\n\r\n const luminance1 = this.calculateLuminance(\r\n newColor1[0],\r\n newColor1[1],\r\n newColor1[2]\r\n );\r\n const luminance2 = this.calculateLuminance(\r\n newColor2[0],\r\n newColor2[1],\r\n newColor2[2]\r\n );\r\n\r\n return luminance1 > luminance2 ? color2 : color1;\r\n }\r\n\r\n calculateLuminance(r: number, g: number, b: number): number {\r\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\r\n }\r\n\r\n /**\r\n * Fixes the provided color string by ensuring it is in a valid hexadecimal format.\r\n * If the input color is a hexadecimal string, it will be normalized to a 6-digit format.\r\n * If the input color is not a hexadecimal string, it will be converted to an RGB array.\r\n *\r\n * @param color - The color string to be fixed.\r\n * @returns An array of RGB values, or the normalized hexadecimal color string.\r\n */\r\n fixColor(color: string) {\r\n let newColor = color;\r\n\r\n if (color.includes(\"#\")) {\r\n newColor = color.slice(1);\r\n newColor =\r\n newColor.length === 3\r\n ? \"#\" +\r\n newColor\r\n .split(\"\")\r\n .map((hex) => hex + hex)\r\n .join(\"\")\r\n : \"#\" + newColor;\r\n } else {\r\n newColor = this.standardize_color(color);\r\n }\r\n\r\n const Reg_Exp = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\r\n const colorIsHex = Reg_Exp.test(newColor);\r\n\r\n const UIColors = colorIsHex\r\n ? this.colorConversionService.hexToRgb(newColor)\r\n : newColor.match(/\\d+/g)?.map((item) => parseInt(item)) || [];\r\n\r\n return UIColors;\r\n }\r\n\r\n /**\r\n * Converts the color representation of the provided string into HEX value.\r\n *\r\n * @param str - The color string to be standardized - 'whitesmoke'.\r\n * @returns The standardized color string - #DEDEDE.\r\n */\r\n standardize_color(str: string): string {\r\n const ctx = document.createElement(\"canvas\").getContext(\"2d\");\r\n\r\n if (ctx) {\r\n ctx.fillStyle = str;\r\n }\r\n\r\n return ctx?.fillStyle as string;\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport {DomSanitizer} from \"@angular/platform-browser\";\n\n@Pipe({\n name: 'safeHtml',\n standalone: false\n})\nexport class SafeHtmlPipe implements PipeTransform {\n\n private sanitizer = inject(DomSanitizer)\n\n transform(html: string) {\n return this.sanitizer.bypassSecurityTrustHtml(html)\n }\n\n}\n","import { Component, EventEmitter, Inject, inject, Input, OnInit, Output, VERSION, ViewEncapsulation } from '@angular/core';\nimport { MAT_SNACK_BAR_DATA, MatSnackBar } from '@angular/material/snack-bar';\n\nimport { ToastDisplay } from '../models/toast-display-model';\nimport { TextColorService } from '../utils';\n\n@Component({\n selector: 'app-toast-ui',\n templateUrl: './toast-ui.component.html',\n styleUrls: ['./toast-ui.component.scss'],\n encapsulation: ViewEncapsulation.None,\n styles: [`\n .mat-mdc-snack-bar-container {\n --mat-snackbar-container-color: var(--toast-bg-color, #fff);\n --mat-mdc-snack-bar-button-color: var(--toast-text-color, #fff);\n --mat-snackbar-supporting-text-color: var(--toast-text-color, #000);\n }\n `],\n standalone: false\n})\nexport class ToastUIComponent implements OnInit {\n\n ngVersion = parseInt(VERSION.full.split('.')[0], 10)\n\n @Output() close = new EventEmitter<ToastDisplay>();\n\n textColorService = inject(TextColorService);\n private snackBar = inject(MatSnackBar);\n\n @Input() options = ToastDisplay.adapt();\n\n constructor(\n @Inject(MAT_SNACK_BAR_DATA)\n public data: ToastDisplay\n ) {\n this.options = ToastDisplay.adapt(data)\n }\n\n ngOnInit() {\n\n if (this.ngVersion >= 15) {\n\n const hostElement = document.querySelector('.mat-mdc-snack-bar-container')\n\n if (hostElement) {\n hostElement.setAttribute('style', `\n --toast-bg-color: ${this.color};\n --toast-text-color: ${this.textColor};\n `)\n }\n\n const surface = document.querySelector('.mdc-snackbar__surface') as HTMLElement;\n if (surface) {\n surface.style.backgroundColor = this.color;\n }\n\n } else {\n\n document.documentElement.style.setProperty('--toast-bg-color', this.color);\n document.documentElement.style.setProperty('--toast-text-color', this.textColor);\n\n const hostElement = document.querySelector('.mat-snack-bar-container') as HTMLElement;\n\n if (hostElement) {\n hostElement.style.backgroundColor = this.color;\n hostElement.style.color = this.textColor;\n\n const actionButton = hostElement.querySelector('.mat-button, .mat-snack-bar-action') as HTMLElement;\n if (actionButton) {\n actionButton.style.color = this.textColor;\n }\n }\n\n }\n\n }\n\n get color() {\n return this.options.color || '#2196f3';\n }\n\n get textColor() {\n return this.textColorService.textColorForBgColor(\n this.color,\n '#FFFFFF',\n '#000000'\n );\n }\n\n onCloseToast(options?: ToastDisplay) {\n this.snackBar.dismiss()\n this.close.emit(options)\n }\n}\n","<div\n class=\"toast-grid-container\"\n [class.has-icon]=\"options.icon\"\n [class.has-action]=\"options.action\"\n >\n @if (options.icon) {\n <mat-icon\n class=\"toast-icon\"\n [style.color]=\"textColor\"\n >\n {{ options.icon }}\n </mat-icon>\n }\n\n <div\n class=\"toast-message\"\n [style.color]=\"textColor\"\n [innerHTML]=\"options.message | safeHtml\"\n >\n </div>\n\n @if (options.action) {\n <button\n class=\"toast-action-button\"\n mat-button\n (click)=\"onCloseToast(options)\"\n [style.color]=\"textColor\"\n >\n @if (options.action !== '-') {\n {{ options.action }}\n } @else {\n <mat-icon>close</mat-icon>\n }\n </button>\n }\n</div>\n","export enum HorizontalAlignment {\n LEFT = 'left',\n RIGHT = 'right',\n CENTER = 'center',\n}\n","export enum VerticalAlignment {\n TOP = 'top',\n BOTTOM = 'bottom',\n}\n","export interface ToastMessageInterface {\n error: string;\n action: string;\n icon: string;\n}\n\nexport class ToastMessage implements ToastMessageInterface {\n constructor(\n public error = '',\n public action = '',\n public icon = 'error',\n ) {}\n\n static adapt(item?: any): ToastMessageInterface {\n return new ToastMessage(\n item?.error,\n item?.action,\n item?.icon,\n )\n\n }\n}\n","import { MatSnackBarVerticalPosition } from \"@angular/material/snack-bar\";\nimport { HorizontalAlignment } from \"./horizontal-alignment.enum\";\nimport { ToastDisplay } from \"./toast-display-model\";\nimport { VerticalAlignment } from \"./vertical-alignment.enum\";\n\nexport interface ToastOptionsInterface {\n duration?: number\n horizontalPosition?: HorizontalAlignment\n verticalPosition?: MatSnackBarVerticalPosition\n data?: ToastDisplay\n}\n\nexport class ToastOptions implements ToastOptionsInterface {\n\n constructor(\n public duration?: number,\n public horizontalPosition = HorizontalAlignment.CENTER,\n public verticalPosition = VerticalAlignment.TOP,\n public data?: ToastDisplay\n ) {}\n\n static adapt(item?: any): ToastOptionsInterface {\n\n const duration = item?.duration ? item.duration * 1000 : item?.duration;\n\n return new ToastOptions(\n duration,\n item?.horizontalPosition,\n item?.verticalPosition,\n item?.data ? ToastDisplay.adapt(item.data) : ToastDisplay.adapt()\n )\n }\n\n}\n","import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { TextColorService } from '../utils';\nimport { ToastDisplay, VerticalAlignment } from '../models';\n\n@Component({\n selector: 'app-toast-message-display-inline',\n templateUrl: './toast-message-inline.component.html',\n styleUrls: ['./toast-message-inline.component.scss'],\n standalone: false\n})\nexport class ToastMessageInlineComponent {\n\n @Output() close = new EventEmitter<ToastDisplay>();\n\n textColorService = inject(TextColorService)\n\n toastList: ToastDisplay[] = []\n\n dismissToasts: any[] = []\n\n @Input() set toast(value: any) {\n\n if (!value) return\n const toast = ToastDisplay.adapt(value)\n\n if (!toast.action) {\n this.dismissToasts.push(toast)\n this.expireTime(toast, this.duration)\n }\n\n this.toastList.push(toast)\n\n }\n\n get option() {\n return (this.toastList.length > 0) ? this.toastList[0] : null\n }\n\n @Input() duration = -1\n @Input() position: VerticalAlignment = VerticalAlignment.TOP\n\n get color() {\n return (this.option) ? this.option.color : ''\n }\n\n get textColor() {\n return (this.option) ? this.textColorService.textColorForBgColor(this.option.color, '#FFFFFF', '#000000') : ''\n }\n\n onCloseToast(toast?: ToastDisplay) {\n this.toastList = this.toastList.filter(item => item.id !== toast?.id)\n this.close.emit(toast)\n }\n\n expireTime(toast: any, duration: number) {\n if (duration <= 0) return\n const boundRemove = this.removeToast.bind(this, toast)\n setTimeout(boundRemove, duration * 1000)\n }\n\n removeToast(toast: any) {\n this.dismissToasts = this.dismissToasts.filter(t => t.id !== toast.id)\n this.toastList = this.toastList.filter(t => t.id !== toast.id)\n }\n\n}\n","<div class=\"toast-inline-list\" [class.position-bottom]=\"position === 'bottom'\">\n @for (toast of toastList; track toast) {\n <div [style.background-color]=\"toast.color\" class=\"inline\">\n <app-toast-ui\n [options]=\"toast\"\n class=\"toast-inline-item\"\n (close)=\"onCloseToast(toast)\"\n ></app-toast-ui>\n </div>\n }\n</div>\n","import { inject, Injectable } from '@angular/core';\nimport { MatSnackBar, MatSnackBarRef, MatSnackBarVerticalPosition } from '@angular/material/snack-bar';\nimport { ToastUIComponent } from '../toast-ui/toast-ui.component';\nimport { ToastOptions } from '../models/toast-options.model';\nimport { VerticalAlignment } from '../models/vertical-alignment.enum';\nimport { ToastDisplay } from '../models/toast-display-model';\nimport { take } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ToastMessageDisplayService {\n\n private snackBar = inject(MatSnackBar);\n\n private toastQueue: { options: ToastDisplay, duration?: number, vertical?: VerticalAlignment }[] = [];\n private isToastVisible = false;\n\n defaultDuration = 3;\n\n snackBarRef: MatSnackBarRef<any> | undefined;\n\n toastMessage(options = ToastDisplay.adapt(), duration?: number, vertical?: VerticalAlignment) {\n this.toastQueue.push({ options, duration, vertical });\n this.showNextToast();\n }\n\n private showNextToast() {\n\n if (this.isToastVisible || this.toastQueue.length === 0) return\n\n const { options, duration, vertical } = this.toastQueue.shift()!\n\n const vertPosition: MatSnackBarVerticalPosition = (vertical) ? vertical : 'top'\n\n const durationDismiss = (!options.action) ? this.defaultDuration : duration\n\n const displayOptions = ToastOptions.adapt({\n duration: durationDismiss,\n horizontalPosition: 'center',\n verticalPosition: vertPosition,\n data: options,\n })\n\n this.isToastVisible = true;\n this.snackBarRef = this.snackBar.openFromComponent(ToastUIComponent, displayOptions);\n\n if (this.snackBarRef) {\n this.snackBarRef\n .afterDismissed()\n .pipe(take(1))\n .subscribe(() => {\n this.isToastVisible = false;\n this.showNextToast();\n });\n } else {\n console.error('Snackbar reference is undefined. Unable to subscribe to dismissal event.');\n }\n\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { ToastColors, ToastDisplay, VerticalAlignment } from '../models';\nimport { FormBuilder } from '@angular/forms';\n\nimport { ToastMessageDisplayService } from '../services/toast-message.service';\n\n@Component({\n selector: 'app-toast-display-demo',\n templateUrl: './toast-demo.component.html',\n styleUrls: ['./toast-demo.component.scss'],\n standalone: false\n})\nexport class ToastDemoComponent {\n\n random = () => {\n const typedArray = new Uint8Array(1)\n const randomValue = crypto.getRandomValues(typedArray)[0]\n const randomFloat = randomValue / Math.pow(2, 8)\n return randomFloat\n }\n\n randomNumber = (min: number, max: number) => {\n return Math.floor(this.random() * max) + min\n }\n\n fb = inject(FormBuilder)\n toastMessageDisplayService = inject(ToastMessageDisplayService)\n\n type = 'Basic'\n\n position = this.fb.control('top')\n\n icons = [\n 'favorite_border',\n 'dashboard',\n 'event',\n 'paid',\n 'notifications',\n 'movie_filter',\n ]\n\n toastSamples = [\n {\n message: `This is a simple toast message. This is a <span style=\"font-size: 22px\">simple toast message</span>. This is a simple toast message. This is a simple toast message`,\n color: ToastColors.ERROR,\n action: \"Ok\"\n },\n {\n message: 'Sample message',\n color: ToastColors.INFO,\n icon: this.icons[0]\n },\n {\n message: 'Sample message',\n color: ToastColors.WARN,\n icon: this.icons[1]\n },\n {\n message: `This is a simple toast message. This is a <span style=\"font-size: 22px\">simple toast message</span>. This is a simple toast message. This is a simple toast message`,\n color: ToastColors.NOTIFY,\n icon: this.icons[2],\n action: \"Dismiss\"\n },\n {\n message: 'Sample message',\n color: ToastColors.GENERAL,\n action: \"Dismiss\"\n },\n {\n message: `This is a simple toast message. This is a <span style=\"font-size: 22px\">simple toast message</span>. This is a simple toast message. This is a simple toast message`,\n color: ToastColors.SUCCESS,\n action: \"-\"\n },\n ]\n\n pickToastSample?: ToastDisplay\n\n onSelectType(type: string) {\n this.type = type\n }\n\n onBasic(type: string, icon?: string, action?: string) {\n switch (type) {\n case 'ERROR':\n this.presentToast(ToastColors.ERROR, icon, action)\n break;\n case 'INFO':\n this.presentToast(ToastColors.INFO, icon, action)\n break;\n case 'WARN':\n this.presentToast(ToastColors.WARN, icon, action)\n break;\n case 'NOTIFY':\n this.presentToast(ToastColors.NOTIFY, icon, action)\n break;\n case 'GENERAL':\n this.presentToast(ToastColors.GENERAL, icon, action)\n break;\n default:\n this.presentToast(ToastColors.SUCCESS, icon, action)\n break;\n }\n }\n\n presentToast(color: ToastColors, icon?: string, action?: string) {\n\n const options = ToastDisplay.adapt({\n message: `This is a simple toast message. <span style=\"font-size: 22px\">simple toast message</span>. This is a simple toast message. This is a simple toast message`,\n color,\n icon,\n action\n })\n\n const toastPosition = (this.position.value === 'top') ? VerticalAlignment.TOP : VerticalAlignment.BOTTOM\n this.toastMessageDisplayService.toastMessage(options, -1, toastPosition)\n }\n\n onInline() {\n const pick = this.randomNumber(0, this.toastSamples.length-1)\n this.pickToastSample = this.toastSamples[pick]\n }\n\n onClosedToast(toast?: ToastDisplay) {\n console.log(toast)\n }\n\n}\n","<mat-toolbar style=\"display: flex;\">\n <div>Toast Message Demo</div>\n <div style=\"flex:1; text-align: end;\">\n <button\n mat-stroked-button\n [matMenuTriggerFor]=\"menu\"\n matIconPrefix\n >\n {{ type | titlecase }}\n <mat-icon>layers</mat-icon>\n </button>\n </div>\n</mat-toolbar>\n\n<mat-menu #menu=\"matMenu\">\n <button\n mat-menu-item\n (click)=\"onSelectType('basic')\"\n >\n Basic\n </button>\n <button\n mat-menu-item\n (click)=\"onSelectType('icon')\"\n >\n Icon\n </button>\n <button\n mat-menu-item\n (click)=\"onSelectType('action')\"\n >\n Action\n </button>\n</mat-menu>\n\n<div style=\"margin: 1rem;\">\n <span>\n @switch (type) {\n @case ('icon') {\n <div>\n <div style=\"display: flex; gap: 1rem; flex-direction: column;\">\n <h3 style=\"flex:1; margin-bottom: 0;\">Toast with Icon</h3>\n <div style=\"display: flex; gap: .5rem;\">\n <button\n mat-stroked-button\n (click)=\"onBasic('SUCCESS', 'favorite_border')\"\n >\n Icon - SUCCESS\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('ERROR', 'dashboard')\"\n >\n Icon - ERROR\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('INFO', 'event')\"\n >\n Icon - INFO\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN', 'paid')\"\n >\n Icon - WARN\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN', 'notifications')\"\n >\n Icon - NOTIFY\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN', 'movie_filter')\"\n >\n Icon - GENERAL\n </button>\n </div>\n </div>\n </div>\n }\n @case ('action') {\n <div>\n <div style=\"display: flex; gap: 1rem; flex-direction: column;\">\n <h3 style=\"flex:1; margin-bottom: 0;\">Toast with Icon and Action</h3>\n <div style=\"display: flex; gap: .5rem;\">\n <button\n mat-stroked-button\n (click)=\"onBasic('SUCCESS', 'favorite_border', 'Dismiss')\"\n >\n Action - SUCCESS\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('ERROR', 'dashboard', 'Dismiss')\"\n >\n Action - ERROR\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('INFO', 'event', 'Dismiss')\"\n >\n Action - INFO\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN', 'paid', 'Dismiss')\"\n >\n Action - WARN\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('NOTIFY', 'notifications', 'Dismiss')\"\n >\n Action - NOTIFY\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('GENERAL', 'movie_filter', 'Dismiss')\"\n >\n Action - GENERAL\n </button>\n </div>\n </div>\n </div>\n }\n @default {\n <div>\n <div style=\"display: flex; gap: 1rem; flex-direction: column;\">\n <h3 style=\"flex:1; margin-bottom: 0;\">Basic Toast</h3>\n <div style=\"display: flex; gap: .5rem;\">\n <button\n mat-stroked-button\n (click)=\"onBasic('SUCCESS')\"\n >\n Basic - SUCCESS\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('ERROR')\"\n >\n Basic - ERROR\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('INFO')\"\n >\n Basic - INFO\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('WARN')\"\n >\n Basic - WARN\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('NOTIFY')\"\n >\n Basic - NOTIFY\n </button>\n <button\n mat-stroked-button\n (click)=\"onBasic('GENERAL')\"\n >\n Basic - GENERAL\n </button>\n </div>\n </div>\n </div>\n }\n }\n </span>\n <div style=\"display: flex; margin-top: 1rem;\">\n <mat-radio-group [formControl]=\"position\" style=\"display: flex; gap: 2rem\">\n <mat-radio-button value=\"top\">Top Position</mat-radio-button>\n <mat-radio-button value=\"bottom\">Bottom Position</mat-radio-button>\n </mat-radio-group>\n </div>\n</div>\n\n<div style=\"margin-top: 1rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n</div>\n\n<div style=\"margin: 1rem;\">\n <button mat-stroked-button (click)=\"onInline()\" style=\"margin-bottom: 2rem;\">\n Add Inline Toast Message\n </button>\n <app-toast-message-display-inline\n [toast]=\"pickToastSample\"\n [duration]=\"5\"\n (close)=\"onClosedToast($event)\"\n ></app-toast-message-display-inline>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatDividerModule } from '@angular/material/divider';\n\nimport { ToastUIComponent } from './toast-ui/toast-ui.component';\nimport { ToastMessageInlineComponent } from './toast-message-inline/toast-message-inline.component';\nimport { SafeHtmlPipe } from './pipes/safe-html.pipe';\nimport { ToastDemoComponent } from './toast-demo/toast-demo.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatIconModule,\n MatSnackBarModule,\n MatButtonModule,\n MatToolbarModule,\n MatMenuModule,\n MatRadioModule,\n MatDividerModule,\n ],\n declarations: [\n SafeHtmlPipe,\n ToastUIComponent,\n ToastDemoComponent,\n\n ToastMessageInlineComponent,\n ],\n exports: [\n ToastUIComponent,\n ToastDemoComponent,\n ToastMessageInlineComponent,\n ],\n})\nexport class ToastMessageDisplayModule { }\n","/*\n * Public API Surface of toast-message\n */\n\nexport * from \"./lib/toast-message.module\"\nexport * from \"./lib/toast-ui/toast-ui.component\"\nexport * from \"./lib/toast-demo/toast-demo.component\"\n\nexport * from './lib/models';\n\nexport * from './lib/toast-message-inline/toast-message-inline.component';\n\nexport * from './lib/services/toast-message.service'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ColorConversionService","i3.SafeHtmlPipe","i1.ToastUIComponent","i1","i2","i3","i8.ToastMessageInlineComponent"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "toast-message-display",
3
- "version": "18.0.6",
3
+ "version": "18.0.17",
4
4
  "homepage": "https://wavecoders.ca",
5
5
  "author": "Mike Bonifacio <wavecoders@gmail.com> (http://wavecoders@gmail.com/)",
6
6
  "description": "This is an Angular Module containing Components/Services using Material",
@@ -11,10 +11,8 @@
11
11
  }
12
12
  ],
13
13
  "peerDependencies": {
14
- "@angular/cdk": ">=18.0.0 <21.0.0",
15
- "@angular/common": ">=18.0.0 <21.0.0",
16
- "@angular/core": ">=18.0.0 <21.0.0",
17
- "@angular/material": ">=18.0.0 <21.0.0"
14
+ "@angular/common": "^18.2.13",
15
+ "@angular/core": "^18.2.13"
18
16
  },
19
17
  "dependencies": {
20
18
  "tslib": "^2.3.0"
@@ -2,16 +2,17 @@ import * as i0 from '@angular/core';
2
2
  import { PipeTransform, OnInit, EventEmitter } from '@angular/core';
3
3
  import * as _angular_platform_browser from '@angular/platform-browser';
4
4
  import * as toast_message_display from 'toast-message-display';
5
- import * as i4 from '@angular/common';
6
- import * as i5 from '@angular/forms';
7
- import * as i6 from '@angular/material/icon';
8
- import * as i7 from '@angular/material/snack-bar';
5
+ import * as _angular_forms from '@angular/forms';
6
+ import { FormBuilder } from '@angular/forms';
7
+ import * as i8 from '@angular/material/snack-bar';
9
8
  import { MatSnackBarVerticalPosition, MatSnackBarRef } from '@angular/material/snack-bar';
10
- import * as i8 from '@angular/material/button';
11
- import * as i9 from '@angular/material/toolbar';
12
- import * as i10 from '@angular/material/menu';
13
- import * as i11 from '@angular/material/radio';
14
- import * as i12 from '@angular/material/divider';
9
+ import * as i5 from '@angular/common';
10
+ import * as i7 from '@angular/material/icon';
11
+ import * as i9 from '@angular/material/button';
12
+ import * as i10 from '@angular/material/toolbar';
13
+ import * as i11 from '@angular/material/menu';
14
+ import * as i12 from '@angular/material/radio';
15
+ import * as i13 from '@angular/material/divider';
15
16
 
16
17
  declare class SafeHtmlPipe implements PipeTransform {
17
18
  private sanitizer;
@@ -151,6 +152,52 @@ declare class ToastOptions implements ToastOptionsInterface {
151
152
  static adapt(item?: any): ToastOptionsInterface;
152
153
  }
153
154
 
155
+ declare class ToastMessageDisplayService {
156
+ private snackBar;
157
+ private toastQueue;
158
+ private isToastVisible;
159
+ defaultDuration: number;
160
+ snackBarRef: MatSnackBarRef<any> | undefined;
161
+ toastMessage(options?: ToastDisplay, duration?: number, vertical?: VerticalAlignment): void;
162
+ private showNextToast;
163
+ static ɵfac: i0.ɵɵFactoryDeclaration<ToastMessageDisplayService, never>;
164
+ static ɵprov: i0.ɵɵInjectableDeclaration<ToastMessageDisplayService>;
165
+ }
166
+
167
+ declare class ToastDemoComponent {
168
+ random: () => number;
169
+ randomNumber: (min: number, max: number) => number;
170
+ fb: FormBuilder;
171
+ toastMessageDisplayService: ToastMessageDisplayService;
172
+ type: string;
173
+ position: _angular_forms.FormControl<string | null>;
174
+ icons: string[];
175
+ toastSamples: ({
176
+ message: string;
177
+ color: ToastColors;
178
+ action: string;
179
+ icon?: undefined;
180
+ } | {
181
+ message: string;
182
+ color: ToastColors;
183
+ icon: string;
184
+ action?: undefined;
185
+ } | {
186
+ message: string;
187
+ color: ToastColors;
188
+ icon: string;
189
+ action: string;
190
+ })[];
191
+ pickToastSample?: ToastDisplay;
192
+ onSelectType(type: string): void;
193
+ onBasic(type: string, icon?: string, action?: string): void;
194
+ presentToast(color: ToastColors, icon?: string, action?: string): void;
195
+ onInline(): void;
196
+ onClosedToast(toast?: ToastDisplay): void;
197
+ static ɵfac: i0.ɵɵFactoryDeclaration<ToastDemoComponent, never>;
198
+ static ɵcmp: i0.ɵɵComponentDeclaration<ToastDemoComponent, "app-toast-display-demo", never, {}, {}, never, never, false, never>;
199
+ }
200
+
154
201
  declare class ToastMessageInlineComponent {
155
202
  close: EventEmitter<ToastDisplay>;
156
203
  textColorService: TextColorService;
@@ -160,7 +207,7 @@ declare class ToastMessageInlineComponent {
160
207
  get option(): ToastDisplay | null;
161
208
  duration: number;
162
209
  position: VerticalAlignment;
163
- get color(): ToastColors | "";
210
+ get color(): "" | ToastColors;
164
211
  get textColor(): string;
165
212
  onCloseToast(toast?: ToastDisplay): void;
166
213
  expireTime(toast: any, duration: number): void;
@@ -171,21 +218,9 @@ declare class ToastMessageInlineComponent {
171
218
 
172
219
  declare class ToastMessageDisplayModule {
173
220
  static ɵfac: i0.ɵɵFactoryDeclaration<ToastMessageDisplayModule, never>;
174
- static ɵmod: i0.ɵɵNgModuleDeclaration<ToastMessageDisplayModule, [typeof SafeHtmlPipe, typeof ToastUIComponent, typeof ToastMessageInlineComponent], [typeof i4.CommonModule, typeof i5.ReactiveFormsModule, typeof i6.MatIconModule, typeof i7.MatSnackBarModule, typeof i8.MatButtonModule, typeof i9.MatToolbarModule, typeof i10.MatMenuModule, typeof i11.MatRadioModule, typeof i12.MatDividerModule], [typeof ToastUIComponent, typeof ToastMessageInlineComponent]>;
221
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ToastMessageDisplayModule, [typeof SafeHtmlPipe, typeof ToastUIComponent, typeof ToastDemoComponent, typeof ToastMessageInlineComponent], [typeof i5.CommonModule, typeof _angular_forms.ReactiveFormsModule, typeof i7.MatIconModule, typeof i8.MatSnackBarModule, typeof i9.MatButtonModule, typeof i10.MatToolbarModule, typeof i11.MatMenuModule, typeof i12.MatRadioModule, typeof i13.MatDividerModule], [typeof ToastUIComponent, typeof ToastDemoComponent, typeof ToastMessageInlineComponent]>;
175
222
  static ɵinj: i0.ɵɵInjectorDeclaration<ToastMessageDisplayModule>;
176
223
  }
177
224
 
178
- declare class ToastMessageDisplayService {
179
- private snackBar;
180
- private toastQueue;
181
- private isToastVisible;
182
- defaultDuration: number;
183
- snackBarRef: MatSnackBarRef<any> | undefined;
184
- toastMessage(options?: ToastDisplay, duration?: number, vertical?: VerticalAlignment): void;
185
- private showNextToast;
186
- static ɵfac: i0.ɵɵFactoryDeclaration<ToastMessageDisplayService, never>;
187
- static ɵprov: i0.ɵɵInjectableDeclaration<ToastMessageDisplayService>;
188
- }
189
-
190
- export { HorizontalAlignment, ToastColors, ToastDisplay, ToastMessage, ToastMessageDisplayModule, ToastMessageDisplayService, ToastMessageInlineComponent, ToastOptions, ToastUIComponent, VerticalAlignment };
225
+ export { HorizontalAlignment, ToastColors, ToastDemoComponent, ToastDisplay, ToastMessage, ToastMessageDisplayModule, ToastMessageDisplayService, ToastMessageInlineComponent, ToastOptions, ToastUIComponent, VerticalAlignment };
191
226
  export type { ToastDisplayInterface, ToastMessageInterface, ToastOptionsInterface };
Binary file