toast-message-display 1.0.74
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +104 -0
- package/esm2022/lib/models/horizontal-alignment.enum.mjs +7 -0
- package/esm2022/lib/models/index.mjs +7 -0
- package/esm2022/lib/models/toast-colors.enum.mjs +10 -0
- package/esm2022/lib/models/toast-display-model.mjs +13 -0
- package/esm2022/lib/models/toast-message.model.mjs +11 -0
- package/esm2022/lib/models/toast-options.model.mjs +17 -0
- package/esm2022/lib/models/vertical-alignment.enum.mjs +6 -0
- package/esm2022/lib/services/index.mjs +2 -0
- package/esm2022/lib/services/toast-message.service.mjs +54 -0
- package/esm2022/lib/toast-demo/toast-demo.component.mjs +62 -0
- package/esm2022/lib/toast-message.module.mjs +61 -0
- package/esm2022/lib/toast-ui/toast-ui.component.mjs +41 -0
- package/esm2022/lib/utils/color-conversion.service.mjs +33 -0
- package/esm2022/lib/utils/index.mjs +3 -0
- package/esm2022/lib/utils/text-color.service.mjs +93 -0
- package/esm2022/public-api.mjs +9 -0
- package/esm2022/toast-message-display.mjs +5 -0
- package/fesm2022/toast-message-display.mjs +387 -0
- package/fesm2022/toast-message-display.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/models/horizontal-alignment.enum.d.ts +5 -0
- package/lib/models/index.d.ts +6 -0
- package/lib/models/toast-colors.enum.d.ts +8 -0
- package/lib/models/toast-display-model.d.ts +15 -0
- package/lib/models/toast-message.model.d.ts +12 -0
- package/lib/models/toast-options.model.d.ts +17 -0
- package/lib/models/vertical-alignment.enum.d.ts +4 -0
- package/lib/services/index.d.ts +1 -0
- package/lib/services/toast-message.service.d.ts +14 -0
- package/lib/toast-demo/toast-demo.component.d.ts +15 -0
- package/lib/toast-message.module.d.ts +17 -0
- package/lib/toast-ui/toast-ui.component.d.ts +17 -0
- package/lib/utils/color-conversion.service.d.ts +7 -0
- package/lib/utils/index.d.ts +2 -0
- package/lib/utils/text-color.service.d.ts +42 -0
- package/package.json +30 -0
- package/public-api.d.ts +5 -0
- package/toast-message-display-1.0.74.tgz +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toast-message-display.mjs","sources":["../../../projects/toast-message/src/lib/models/toast-colors.enum.ts","../../../projects/toast-message/src/lib/models/toast-display-model.ts","../../../projects/toast-message/src/lib/utils/color-conversion.service.ts","../../../projects/toast-message/src/lib/utils/text-color.service.ts","../../../projects/toast-message/src/lib/toast-ui/toast-ui.component.ts","../../../projects/toast-message/src/lib/toast-ui/toast-ui.component.html","../../../projects/toast-message/src/lib/models/horizontal-alignment.enum.ts","../../../projects/toast-message/src/lib/models/vertical-alignment.enum.ts","../../../projects/toast-message/src/lib/models/toast-options.model.ts","../../../projects/toast-message/src/lib/services/toast-message.service.ts","../../../projects/toast-message/src/lib/models/toast-message.model.ts","../../../projects/toast-message/src/lib/toast-demo/toast-demo.component.ts","../../../projects/toast-message/src/lib/toast-demo/toast-demo.component.html","../../../projects/toast-message/src/lib/toast-message.module.ts","../../../projects/toast-message/src/public-api.ts","../../../projects/toast-message/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 message: string;\n action?: string;\n color: ToastColors;\n icon?: string\n}\n\nexport class ToastDisplay implements ToastDisplayInterface {\n constructor(\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): ToastDisplayInterface {\n return new ToastDisplay(\n item?.message,\n item?.action,\n item?.color,\n item?.icon,\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 { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Inject } from '@angular/core';\n\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})\nexport class ToastUIComponent implements OnInit {\n\n textColorService = inject(TextColorService)\n\n options = ToastDisplay.adapt()\n\n constructor(@Inject(MAT_SNACK_BAR_DATA) public data: ToastDisplay) {\n this.options = ToastDisplay.adapt(data)\n }\n\n get color() {\n return this.options.color\n }\n\n get textColor() {\n return this.textColorService.textColorForBgColor(this.options.color, '#FFFFFF', '#000000')\n }\n\n private snackBar = inject(MatSnackBar)\n\n ngOnInit() {\n document.documentElement.style.setProperty('--snackbar-color', this.color);\n }\n\n onCloseToast() {\n this.snackBar.dismiss()\n }\n\n}\n","<div class=\"message-container\">\n\n <div class=\"message-content\">\n <mat-icon\n *ngIf=\"options.icon\"\n [style.color]=\"textColor\"\n class=\"icon-size\"\n >\n {{ options.icon }}\n </mat-icon>\n <div class=\"message-ellipse\" [style.color]=\"textColor\">\n {{ options.message }}\n </div>\n </div>\n\n <button\n mat-button\n disableRipple\n (click)=\"onCloseToast()\"\n [style.color]=\"textColor\"\n *ngIf=\"options.action\"\n >\n {{ options.action }}\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","import { 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?: VerticalAlignment\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 if(item?.duration) item.duration = item.duration * 1000\n\n return new ToastOptions(\n item?.duration,\n item?.horizontalPosition,\n item?.verticalPosition,\n item?.data ? ToastDisplay.adapt(item.data) : ToastDisplay.adapt()\n )\n }\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MatSnackBar, MatSnackBarRef } 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 ToastMessageService {\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 durationDismiss = (!options.action) ? this.defaultDuration : duration\n\n const displayOptions = ToastOptions.adapt({\n duration: durationDismiss,\n horizontalPosition: 'center',\n verticalPosition: vertical,\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","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 { Component, inject } from '@angular/core';\nimport { ToastMessageService } from '../services';\nimport { ToastColors, ToastDisplay, VerticalAlignment } from '../models';\nimport { FormBuilder } from '@angular/forms';\n\n@Component({\n selector: 'app-toast-demo',\n templateUrl: './toast-demo.component.html',\n styleUrls: ['./toast-demo.component.scss']\n})\nexport class ToastDemoComponent {\n\n fb = inject(FormBuilder)\n toastMessageService = inject(ToastMessageService)\n\n type = 'Basic'\n\n position = this.fb.control('top')\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\",\n color,\n icon,\n action\n })\n\n const toastPosition = (this.position.value === 'top') ? VerticalAlignment.TOP : VerticalAlignment.BOTTOM\n\n this.toastMessageService.toastMessage(options, -1, toastPosition)\n }\n\n}\n","<mat-toolbar style=\"display: flex;\">\n <div>Dynamic Dialog 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 [ngSwitch]=\"type\">\n <div *ngSwitchCase=\"'icon'\">\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 <div *ngSwitchCase=\"'action'\">\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 <div *ngSwitchDefault>\n\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\n </div>\n </span>\n <div style=\"display: flex; margin-top: 1rem;\">\n <mat-radio-group [formControl]=\"position\">\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","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { BrowserModule } from '@angular/platform-browser';\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';\n\nimport { ToastUIComponent } from './toast-ui/toast-ui.component';\nimport { ToastDemoComponent } from './toast-demo/toast-demo.component';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatRadioModule } from '@angular/material/radio';\n\n@NgModule({\n imports: [\n CommonModule,\n BrowserModule,\n ReactiveFormsModule,\n MatIconModule,\n MatSnackBarModule,\n MatButtonModule,\n MatToolbarModule,\n MatMenuModule,\n MatRadioModule,\n ],\n declarations: [\n ToastUIComponent,\n ToastDemoComponent,\n ],\n exports: [\n ToastUIComponent,\n ToastDemoComponent,\n ]\n})\nexport class ToastMessageModule { }\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/services';\nexport * from './lib/models';\n\nexport * from './lib/toast-demo/toast-demo.component'; // Export the component\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ColorConversionService","i2","i3","i4"],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ToastColors } from "./toast-colors.enum";
|
|
2
|
+
export interface ToastDisplayInterface {
|
|
3
|
+
message: string;
|
|
4
|
+
action?: string;
|
|
5
|
+
color: ToastColors;
|
|
6
|
+
icon?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class ToastDisplay implements ToastDisplayInterface {
|
|
9
|
+
message: string;
|
|
10
|
+
action?: string | undefined;
|
|
11
|
+
color: ToastColors;
|
|
12
|
+
icon?: string | undefined;
|
|
13
|
+
constructor(message?: string, action?: string | undefined, color?: ToastColors, icon?: string | undefined);
|
|
14
|
+
static adapt(item?: any): ToastDisplayInterface;
|
|
15
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface ToastMessageInterface {
|
|
2
|
+
error: string;
|
|
3
|
+
action: string;
|
|
4
|
+
icon: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class ToastMessage implements ToastMessageInterface {
|
|
7
|
+
error: string;
|
|
8
|
+
action: string;
|
|
9
|
+
icon: string;
|
|
10
|
+
constructor(error?: string, action?: string, icon?: string);
|
|
11
|
+
static adapt(item?: any): ToastMessageInterface;
|
|
12
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { HorizontalAlignment } from "./horizontal-alignment.enum";
|
|
2
|
+
import { ToastDisplay } from "./toast-display-model";
|
|
3
|
+
import { VerticalAlignment } from "./vertical-alignment.enum";
|
|
4
|
+
export interface ToastOptionsInterface {
|
|
5
|
+
duration?: number;
|
|
6
|
+
horizontalPosition?: HorizontalAlignment;
|
|
7
|
+
verticalPosition?: VerticalAlignment;
|
|
8
|
+
data?: ToastDisplay;
|
|
9
|
+
}
|
|
10
|
+
export declare class ToastOptions implements ToastOptionsInterface {
|
|
11
|
+
duration?: number | undefined;
|
|
12
|
+
horizontalPosition: HorizontalAlignment;
|
|
13
|
+
verticalPosition: VerticalAlignment;
|
|
14
|
+
data?: ToastDisplay | undefined;
|
|
15
|
+
constructor(duration?: number | undefined, horizontalPosition?: HorizontalAlignment, verticalPosition?: VerticalAlignment, data?: ToastDisplay | undefined);
|
|
16
|
+
static adapt(item?: any): ToastOptionsInterface;
|
|
17
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./toast-message.service";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { MatSnackBarRef } from '@angular/material/snack-bar';
|
|
2
|
+
import { VerticalAlignment } from '../models/vertical-alignment.enum';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class ToastMessageService {
|
|
5
|
+
private snackBar;
|
|
6
|
+
private toastQueue;
|
|
7
|
+
private isToastVisible;
|
|
8
|
+
defaultDuration: number;
|
|
9
|
+
snackBarRef: MatSnackBarRef<any> | undefined;
|
|
10
|
+
toastMessage(options?: import("../models/toast-display-model").ToastDisplayInterface, duration?: number, vertical?: VerticalAlignment): void;
|
|
11
|
+
private showNextToast;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ToastMessageService, never>;
|
|
13
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ToastMessageService>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ToastMessageService } from '../services';
|
|
2
|
+
import { ToastColors } from '../models';
|
|
3
|
+
import { FormBuilder } from '@angular/forms';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class ToastDemoComponent {
|
|
6
|
+
fb: FormBuilder;
|
|
7
|
+
toastMessageService: ToastMessageService;
|
|
8
|
+
type: string;
|
|
9
|
+
position: import("@angular/forms").FormControl<string | null>;
|
|
10
|
+
onSelectType(type: string): void;
|
|
11
|
+
onBasic(type: string, icon?: string, action?: string): void;
|
|
12
|
+
presentToast(color: ToastColors, icon?: string, action?: string): void;
|
|
13
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ToastDemoComponent, never>;
|
|
14
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ToastDemoComponent, "app-toast-demo", never, {}, {}, never, never, false, never>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./toast-ui/toast-ui.component";
|
|
3
|
+
import * as i2 from "./toast-demo/toast-demo.component";
|
|
4
|
+
import * as i3 from "@angular/common";
|
|
5
|
+
import * as i4 from "@angular/platform-browser";
|
|
6
|
+
import * as i5 from "@angular/forms";
|
|
7
|
+
import * as i6 from "@angular/material/icon";
|
|
8
|
+
import * as i7 from "@angular/material/snack-bar";
|
|
9
|
+
import * as i8 from "@angular/material/button";
|
|
10
|
+
import * as i9 from "@angular/material/toolbar";
|
|
11
|
+
import * as i10 from "@angular/material/menu";
|
|
12
|
+
import * as i11 from "@angular/material/radio";
|
|
13
|
+
export declare class ToastMessageModule {
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ToastMessageModule, never>;
|
|
15
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ToastMessageModule, [typeof i1.ToastUIComponent, typeof i2.ToastDemoComponent], [typeof i3.CommonModule, typeof i4.BrowserModule, typeof i5.ReactiveFormsModule, typeof i6.MatIconModule, typeof i7.MatSnackBarModule, typeof i8.MatButtonModule, typeof i9.MatToolbarModule, typeof i10.MatMenuModule, typeof i11.MatRadioModule], [typeof i1.ToastUIComponent, typeof i2.ToastDemoComponent]>;
|
|
16
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<ToastMessageModule>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { ToastDisplay } from '../models/toast-display-model';
|
|
3
|
+
import { TextColorService } from '../utils';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class ToastUIComponent implements OnInit {
|
|
6
|
+
data: ToastDisplay;
|
|
7
|
+
textColorService: TextColorService;
|
|
8
|
+
options: import("../models/toast-display-model").ToastDisplayInterface;
|
|
9
|
+
constructor(data: ToastDisplay);
|
|
10
|
+
get color(): import("toast-message-display").ToastColors;
|
|
11
|
+
get textColor(): string;
|
|
12
|
+
private snackBar;
|
|
13
|
+
ngOnInit(): void;
|
|
14
|
+
onCloseToast(): void;
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ToastUIComponent, never>;
|
|
16
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ToastUIComponent, "app-toast-ui", never, {}, {}, never, never, false, never>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class ColorConversionService {
|
|
3
|
+
rgbToHex(rgb: number[]): string;
|
|
4
|
+
hexToRgb(hex: string): number[];
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ColorConversionService, never>;
|
|
6
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ColorConversionService>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ColorConversionService } from './color-conversion.service';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class TextColorService {
|
|
4
|
+
private colorConversionService;
|
|
5
|
+
constructor(colorConversionService: ColorConversionService);
|
|
6
|
+
/**
|
|
7
|
+
* Determines the appropriate text color (light or dark) based on the background color.
|
|
8
|
+
*
|
|
9
|
+
* @param bgColor - The background color to use for the calculation.
|
|
10
|
+
* @param lightColor - The light color to use if the background is dark.
|
|
11
|
+
* @param darkColor - The dark color to use if the background is light.
|
|
12
|
+
* @returns The appropriate text color (light or dark) based on the background color.
|
|
13
|
+
*/
|
|
14
|
+
textColorForBgColor(bgColor: string, lightColor: string, darkColor: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* Determines whether the first color is darker than the second color.
|
|
17
|
+
*
|
|
18
|
+
* @param color1 - The first color to compare.
|
|
19
|
+
* @param color2 - The second color to compare.
|
|
20
|
+
* @returns The darker of the two colors.
|
|
21
|
+
*/
|
|
22
|
+
isColorDarker(color1: string, color2: string): string;
|
|
23
|
+
calculateLuminance(r: number, g: number, b: number): number;
|
|
24
|
+
/**
|
|
25
|
+
* Fixes the provided color string by ensuring it is in a valid hexadecimal format.
|
|
26
|
+
* If the input color is a hexadecimal string, it will be normalized to a 6-digit format.
|
|
27
|
+
* If the input color is not a hexadecimal string, it will be converted to an RGB array.
|
|
28
|
+
*
|
|
29
|
+
* @param color - The color string to be fixed.
|
|
30
|
+
* @returns An array of RGB values, or the normalized hexadecimal color string.
|
|
31
|
+
*/
|
|
32
|
+
fixColor(color: string): number[];
|
|
33
|
+
/**
|
|
34
|
+
* Converts the color representation of the provided string into HEX value.
|
|
35
|
+
*
|
|
36
|
+
* @param str - The color string to be standardized - 'whitesmoke'.
|
|
37
|
+
* @returns The standardized color string - #DEDEDE.
|
|
38
|
+
*/
|
|
39
|
+
standardize_color(str: string): string;
|
|
40
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TextColorService, never>;
|
|
41
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<TextColorService>;
|
|
42
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "toast-message-display",
|
|
3
|
+
"version": "1.0.74",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^14.0.0 || ^15.0.0",
|
|
6
|
+
"@angular/core": "^14.0.0 || ^15.0.0"
|
|
7
|
+
},
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"tslib": "^2.3.0"
|
|
10
|
+
},
|
|
11
|
+
"sideEffects": false,
|
|
12
|
+
"$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
|
|
13
|
+
"dest": "../../dist/toast-message",
|
|
14
|
+
"lib": {
|
|
15
|
+
"entryFile": "src/public-api.ts"
|
|
16
|
+
},
|
|
17
|
+
"module": "fesm2022/toast-message-display.mjs",
|
|
18
|
+
"typings": "index.d.ts",
|
|
19
|
+
"exports": {
|
|
20
|
+
"./package.json": {
|
|
21
|
+
"default": "./package.json"
|
|
22
|
+
},
|
|
23
|
+
".": {
|
|
24
|
+
"types": "./index.d.ts",
|
|
25
|
+
"esm2022": "./esm2022/toast-message-display.mjs",
|
|
26
|
+
"esm": "./esm2022/toast-message-display.mjs",
|
|
27
|
+
"default": "./fesm2022/toast-message-display.mjs"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
package/public-api.d.ts
ADDED
|
Binary file
|