UNPKG

ngx-french-toast

Version:

<p align="center"> <img src="./projects/ngx-french-toast/logo.png" alt="ngx-french-toast logo" width="200px" /> </p>

1 lines 35.4 kB
{"version":3,"file":"ngx-french-toast.mjs","sources":["../../../projects/ngx-french-toast/src/lib/enums/enums.ts","../../../projects/ngx-french-toast/src/lib/toast.tokens.ts","../../../projects/ngx-french-toast/src/lib/utils/utils.ts","../../../projects/ngx-french-toast/src/lib/components/toasts/toast/toast.component.ts","../../../projects/ngx-french-toast/src/lib/components/toasts/toast/toast.component.html","../../../projects/ngx-french-toast/src/lib/components/toasts/toasts.component.ts","../../../projects/ngx-french-toast/src/lib/components/toasts/toasts.component.html","../../../projects/ngx-french-toast/src/lib/french-toast.service.ts","../../../projects/ngx-french-toast/src/lib/french-toast.module.ts","../../../projects/ngx-french-toast/src/lib/providers/french-toast.provider.ts","../../../projects/ngx-french-toast/src/public-api.ts","../../../projects/ngx-french-toast/src/ngx-french-toast.ts"],"sourcesContent":["export enum ToastPosition {\n TOP_RIGHT = 'top-right',\n BOTTOM_RIGHT = 'bottom-right',\n TOP_LEFT = 'top-left',\n BOTTOM_LEFT = 'bottom-left'\n}\n\nexport enum ToastType {\n SUCCESS = 'success',\n DANGER = 'danger',\n WARNING = 'warning',\n INFO = 'info'\n}","import { InjectionToken } from '@angular/core';\nimport { ToastConfig } from './interfaces/interfaces';\n\nexport const TOAST_CONFIG = new InjectionToken<ToastConfig>('TOAST_CONFIG');","// Generated by ChatGPT @ Jun 2023\nexport function darkenHexColor(hexColor: string, factor: number): string {\n // Remove the '#' symbol from the HEX color code\n hexColor = hexColor.replace('#', '');\n\n // Convert the HEX color code to RGB values\n const r = parseInt(hexColor.substring(0, 2), 16);\n const g = parseInt(hexColor.substring(2, 4), 16);\n const b = parseInt(hexColor.substring(4, 6), 16);\n\n // Convert RGB to HSL\n const hsl = rgbToHsl(r, g, b);\n\n // Darken the lightness component\n const darkenedHsl = { ...hsl, l: hsl.l * factor };\n\n // Add a small amount of black\n const blackFactor = 0.125; // Adjust the value to control the amount of black added\n const darkenedL = darkenedHsl.l * (1 - blackFactor);\n\n // Convert HSL back to RGB\n const rgb = hslToRgb(darkenedHsl.h, darkenedHsl.s, darkenedL);\n\n // Convert the RGB values back to HEX\n const darkenedHex = `#${padZero(rgb.r.toString(16))}${padZero(rgb.g.toString(16))}${padZero(rgb.b.toString(16))}`;\n\n return darkenedHex;\n}\n\nfunction rgbToHsl(r: number, g: number, b: number): { h: number; s: number; l: number } {\n r /= 255;\n g /= 255;\n b /= 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0,\n s = 0,\n l = (max + min) / 2;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n\n h = (r - g) / d + 4;\n break;\n }\n\n h /= 6;\n }\n return { h, s, l };\n}\n\nfunction hslToRgb(h: number, s: number, l: number): { r: number; g: number; b: number } {\n let r, g, b;\n\n if (s === 0) {\n r = g = b = l;\n } else {\n const hue2rgb = (p: number, q: number, t: number): number => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n };\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n\n r = hue2rgb(p, q, h + 1 / 3) * 255;\n g = hue2rgb(p, q, h) * 255;\n b = hue2rgb(p, q, h - 1 / 3) * 255;\n }\n\n return {\n r: Math.round(r),\n g: Math.round(g),\n b: Math.round(b),\n };\n}\n\nfunction padZero(hex: string): string {\n return hex.length === 1 ? `0${hex}` : hex;\n}","import {\n AfterContentInit,\n AfterViewInit,\n Component,\n ComponentRef,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnInit,\n Output,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { ToastModel } from '../../../interfaces/interfaces';\nimport { ToastConfig } from '../../../interfaces/interfaces';\nimport { TOAST_CONFIG } from '../../../toast.tokens';\nimport { ToastPosition } from '../../../enums/enums';\nimport { darkenHexColor } from '../../../utils/utils';\nimport { NgStyle } from '@angular/common';\n\n@Component({\n selector: 'toast',\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.scss', '../../../styles/common-styles.scss'],\n imports: [NgStyle]\n})\nexport class ToastComponent implements OnInit, AfterContentInit, AfterViewInit {\n @HostListener('click', ['$event'])\n public onClick(event: any): void {\n event.stopPropagation();\n }\n @ViewChild('container', { read: ViewContainerRef })\n container!: ViewContainerRef;\n @Input() toast!: ToastModel;\n @Input() currentTheme!: string;\n @Output() control: EventEmitter<ToastModel> = new EventEmitter<ToastModel>();\n isVisible: boolean = false;\n duration!: number;\n remainingTime!: number;\n timeout!: any;\n resumeTime!: Date;\n component!: ComponentRef<any>;\n svgUrlIsFromSprite: boolean = false;\n position: ToastPosition = ToastPosition.BOTTOM_RIGHT;\n bottomRight: ToastPosition = ToastPosition.BOTTOM_RIGHT;\n bottomLeft: ToastPosition = ToastPosition.BOTTOM_LEFT;\n topRight: ToastPosition = ToastPosition.TOP_RIGHT;\n topLeft: ToastPosition = ToastPosition.TOP_LEFT;\n linearGradient: string = '';\n toastConfig!: ToastConfig;\n timebarColor!: { background: string };\n textColor: string = '';\n style: string = '';\n\n constructor(@Inject(TOAST_CONFIG) private config: ToastConfig) {\n this.toastConfig = this.config;\n if (this.toastConfig.position) {\n this.position = this.toastConfig.position;\n }\n }\n\n ngAfterViewInit(): void {\n if (this.toast.component) {\n this.createDynamicToast();\n }\n }\n\n ngOnInit(): void {\n this.getColors();\n this.svgUrlIsFromSprite = this.toast.icon?.includes('.svg#') as boolean;\n if (this.toast?.infinite) return;\n this.duration = Number(this.toast.duration);\n this.remainingTime = Number(this.toast.duration);\n this.resumeTime = new Date();\n this.timeout = setTimeout(() => {\n this.destroyToast();\n }, this.duration);\n }\n\n ngAfterContentInit(): void {\n setTimeout(() => {\n this.isVisible = true;\n }, 10);\n }\n\n createDynamicToast(): void {\n this.container.clear();\n setTimeout(() => {\n this.component = this.container.createComponent(this.toast.component);\n this.component.instance.content = this.toast.content;\n if (this.toast?.context) {\n this.component.instance.context = this.toast.context;\n }\n }, 0);\n }\n\n destroyToast() {\n this.isVisible = false;\n setTimeout(() => {\n this.toast.isVisible = false;\n this.control.emit(this.toast);\n }, 100);\n }\n\n onMouseEnter() {\n if (this.toast?.infinite) return;\n clearTimeout(this.timeout);\n const diff = new Date().getTime() - this.resumeTime.getTime();\n this.remainingTime -= diff;\n }\n\n onMouseLeave() {\n if (this.toast?.infinite) return;\n this.resumeTime = new Date();\n this.timeout = setTimeout(() => {\n this.destroyToast();\n }, this.remainingTime);\n }\n\n getColors(): void {\n this.getToastStyle();\n this.getTimebarColor();\n }\n\n getToastStyle(): void {\n this.textColor = this.getToastTextColor();\n this.style = `--text-color: ${this.textColor};`;\n const colorHexCode: string = this.toastConfig?.colors?.[this.toast.type] as string;\n if (!colorHexCode) return;\n const darkenedColorHexCode = darkenHexColor(colorHexCode as string, 0.725);\n this.linearGradient = this.config.colors?.autoGradient\n ? `linear-gradient(45deg, ${darkenedColorHexCode}, ${colorHexCode})`\n : colorHexCode;\n this.style += `background: ${this.linearGradient}`;\n }\n\n getToastTextColor(): string {\n const toastTypeText = this.toast.type + 'Text';\n const textColorHexCode =\n this.config.colors?.[toastTypeText as 'successText' | 'dangerText' | 'infoText' | 'warningText'] || '#ffffff';\n return textColorHexCode;\n }\n\n getTimebarColor(): void {\n if (!this.toastConfig.colors?.timebar) return;\n this.timebarColor = {\n background: this.toastConfig.colors?.timebar as string\n };\n }\n}\n","<div\n class=\"toast-container\"\n [id]=\"toast._id\"\n [style]=\"style\"\n [class.right]=\"position === bottomRight || position === topRight\"\n [class.left]=\"position === bottomLeft || position === topLeft\"\n [class.visible]=\"isVisible\"\n [class]=\"toast.type\"\n [class.dynamic]=\"toast.component ? true : false\"\n (click)=\"toast.component ? null : destroyToast()\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n>\n @if (toast.component) {\n <div class=\"close\">\n <button class=\"icon\" (click)=\"destroyToast()\"></button>\n </div>\n }\n @if (!toast.infinite) {\n <div class=\"toast-timer\" [style]=\"'--animation-speed: ' + duration / 1000 + 's;'\" [ngStyle]=\"timebarColor\"></div>\n }\n <div class=\"toast-group\">\n @if (toast.icon) {\n <div class=\"toast-group__icon\">\n @if (svgUrlIsFromSprite) {\n <svg>\n <use [attr.xlink:href]=\"toast.icon\"></use>\n </svg>\n } @else {\n <img [src]=\"toast.icon\" />\n }\n </div>\n }\n <div class=\"toast-group__text\">\n <span class=\"toast-group__text--title\">{{ toast.title }}</span>\n @if (toast.component || toast.content) {\n @if (toast.component) {\n <ng-template #container></ng-template>\n } @else {\n <span class=\"toast-group__text--content\">{{ toast.content }}</span>\n }\n }\n </div>\n </div>\n</div>\n","import {\n AfterViewInit,\n Component,\n ComponentRef,\n DestroyRef,\n inject,\n Inject,\n OnInit,\n QueryList,\n ViewChildren\n} from '@angular/core';\nimport { delay, filter, startWith } from 'rxjs';\nimport { ToastModel } from '../../interfaces/interfaces';\nimport { ToastComponent } from './toast/toast.component';\nimport { ToastService } from '../../french-toast.service';\nimport { TOAST_CONFIG } from '../../toast.tokens';\nimport { ToastConfig } from '../../interfaces/interfaces';\nimport { ToastPosition } from '../../enums/enums';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'french-toast',\n templateUrl: './toasts.component.html',\n styleUrls: ['./toasts.component.scss', '../../styles/common-styles.scss'],\n imports: [ToastComponent]\n})\nexport class ToastsComponent implements OnInit, AfterViewInit {\n toasts: ToastModel[] = [];\n @ViewChildren(ToastComponent) toastsComponents!: QueryList<ToastComponent>;\n position: ToastPosition = ToastPosition.BOTTOM_RIGHT;\n bottomRight: ToastPosition = ToastPosition.BOTTOM_RIGHT;\n bottomLeft: ToastPosition = ToastPosition.BOTTOM_LEFT;\n topRight: ToastPosition = ToastPosition.TOP_RIGHT;\n topLeft: ToastPosition = ToastPosition.TOP_LEFT;\n fontFamily: string = '';\n titleFontSize: string = '';\n contentFontSize: string = '';\n style: string = '';\n componentRef!: ComponentRef<ToastsComponent>;\n private destroyRef = inject(DestroyRef);\n\n constructor(\n private toastService: ToastService,\n @Inject(TOAST_CONFIG) private config: ToastConfig\n ) {\n if (this.config.position) this.position = this.config.position;\n }\n\n ngOnInit(): void {\n this.getToasts();\n this.style = this.getStyles();\n }\n\n ngAfterViewInit(): void {\n this.toastsComponents.changes.pipe(startWith(''), delay(0), takeUntilDestroyed(this.destroyRef)).subscribe({\n next: () => {\n const reachedLimit = this.toastsComponents.toArray().length > (this.config.limit || 3);\n if (reachedLimit) {\n this.toastsComponents.toArray()[0].destroyToast();\n }\n }\n });\n }\n\n getStyles(): string {\n this.fontFamily = `--font-family: ${this.config.font?.family || 'sans-serif'}`;\n this.titleFontSize = `--title-font-size: ${this.config.font?.titleFontSize || '1.2rem'}`;\n this.contentFontSize = `--content-font-size: ${this.config.font?.contentFontSize || '1rem'}`;\n return `${this.fontFamily}; ${this.titleFontSize}; ${this.contentFontSize}`;\n }\n\n getToasts(): void {\n this.listenForToasts();\n this.listenForDestroyAllToasts();\n this.listenForDestroyToast();\n }\n\n listenForToasts(): void {\n this.toastService.toast\n .pipe(\n filter((toast) => !!toast),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe({\n next: (toast) => {\n const toastElement: ToastModel = toast as ToastModel;\n const pinnedToastOnScreen = this.toasts.some((tst) => tst?.pinned);\n if (pinnedToastOnScreen && !toast?.pinned) {\n const firstPinnedToastIndex = this.toasts.indexOf(this.toasts.find((e) => e.pinned) as ToastModel);\n this.toasts.splice(firstPinnedToastIndex, 0, toastElement);\n return;\n }\n this.toasts.push(toast as ToastModel);\n }\n });\n }\n\n listenForDestroyAllToasts(): void {\n this.toastService.clearAll.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\n next: () => {\n if (!this.toastsComponents) return;\n this.toastsComponents.toArray().forEach((e) => {\n e.destroyToast();\n });\n }\n });\n }\n\n listenForDestroyToast(): void {\n this.toastService.clearToast.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\n next: (uniqueId: string) => {\n this.toastsComponents\n .toArray()\n .find((toast) => toast.toast._uId === uniqueId)\n ?.destroyToast();\n }\n });\n }\n\n control(toast: ToastModel): void {\n const index = this.toasts.indexOf(toast);\n this.toasts.splice(index, 1);\n if (this.toasts.length === 0) {\n this.componentRef.destroy();\n }\n }\n}\n","@if (toasts.length) {\n <div\n class=\"toasts-container\"\n [style]=\"style\"\n [class.bottom-right]=\"position === bottomRight\"\n [class.bottom-left]=\"position === bottomLeft\"\n [class.top-left]=\"position === topLeft\"\n [class.top-right]=\"position === topRight\"\n >\n @for (toast of toasts; track toast._id) {\n @if (toast?.isVisible) {\n <toast [toast]=\"toast\" (control)=\"control($event)\" />\n }\n }\n </div>\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { ToastModel } from './interfaces/interfaces';\nimport { ToastInputModel } from './interfaces/interfaces';\nimport { ToastType } from './enums/enums';\nimport { ToastConfig } from './interfaces/interfaces';\nimport { TOAST_CONFIG } from './toast.tokens';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ToastsComponent } from './components/toasts/toasts.component';\nimport { ToastComponent } from './components/toasts/toast/toast.component';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ToastService {\n\n toast: BehaviorSubject<ToastModel | null> = new BehaviorSubject<ToastModel | null>(null);\n clearAll = new Subject<void>();\n clearToast = new Subject<string>();\n private overlayRef!: OverlayRef;\n private duration: number = 7000;\n\n constructor(@Inject(TOAST_CONFIG) private config: ToastConfig, private overlay: Overlay) {\n if (this.config?.defaultDuration) {\n this.duration = this.config.defaultDuration;\n }\n }\n\n private addToast(toastInput: ToastInputModel, type: ToastType): void {\n const newToast: ToastModel = {\n _id: toastInput._id,\n title: toastInput.title,\n content: toastInput.content,\n isVisible: true,\n duration: toastInput.duration,\n icon: toastInput?.icon ?? null,\n type,\n component: toastInput.component,\n infinite: toastInput.infinite,\n pinned: toastInput.pinned,\n context: toastInput.context,\n _uId: this.getUniqueId(6)\n };\n this.toast.next(newToast);\n if (!this.overlayRef?.hasAttached()) this.createOverlay();\n }\n\n createOverlay(): void {\n this.overlayRef = this.overlay.create();\n const toastPortal = new ComponentPortal(ToastsComponent);\n const componentRef = this.overlayRef.attach(toastPortal);\n componentRef.instance.componentRef = componentRef;\n }\n\n private handleToast(toastInput: ToastInputModel, type: ToastType): void {\n toastInput._id = toastInput?._id ?? this.getUniqueId(5);\n toastInput.duration = toastInput?.duration ?? this.duration;\n this.addToast(toastInput, type);\n }\n\n success(toastInput: ToastInputModel): void {\n this.handleToast(toastInput, ToastType.SUCCESS);\n }\n\n danger(toastInput: ToastInputModel): void {\n this.handleToast(toastInput, ToastType.DANGER);\n }\n\n info(toastInput: ToastInputModel): void {\n this.handleToast(toastInput, ToastType.INFO);\n }\n\n warning(toastInput: ToastInputModel): void {\n this.handleToast(toastInput, ToastType.WARNING);\n }\n\n clearAllToasts(): void {\n this.clearAll.next();\n }\n\n destroyToast(toastComponent: ToastComponent): void {\n this.clearToast.next(toastComponent.toast._uId);\n }\n\n private getUniqueId(parts: number): string {\n const stringArr = [];\n for(let i = 0; i< parts; i++){\n // tslint:disable-next-line:no-bitwise\n const S4 = (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\n stringArr.push(S4);\n }\n return stringArr.join('');\n }\n}","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ToastConfig } from './interfaces/interfaces';\nimport { ToastPosition } from './enums/enums';\nimport { TOAST_CONFIG } from './toast.tokens';\n\n@NgModule({})\n\nexport class FrenchToastModule {\n static forRoot(config?: ToastConfig): ModuleWithProviders<FrenchToastModule> {\n if (!config) {\n config = {\n position: ToastPosition.BOTTOM_RIGHT,\n defaultDuration: 10000,\n colors: {\n autoGradient: false\n }\n }\n }\n return {\n ngModule: FrenchToastModule,\n providers: [\n { provide: TOAST_CONFIG, useValue: config }\n ]\n };\n }\n}","import { EnvironmentProviders, Provider, makeEnvironmentProviders } from \"@angular/core\";\nimport { ToastConfig } from \"../interfaces/interfaces\";\nimport { TOAST_CONFIG } from \"../toast.tokens\";\n\nexport const provideFrenchToast = (config: Partial<ToastConfig> = {}): EnvironmentProviders => {\n const providers: Provider[] = [\n {\n provide: TOAST_CONFIG,\n useValue: config\n }\n ];\n return makeEnvironmentProviders(providers);\n};","/*\n * Public API Surface of ngx-french-toast\n */\n\nexport * from './lib/french-toast.service';\nexport * from './lib/french-toast.module';\nexport * from './lib/components/toasts/toasts.component';\nexport * from './lib/components/toasts/toast/toast.component';\nexport * from './lib/enums/enums';\nexport * from './lib/interfaces/interfaces';\nexport * from './lib/providers/french-toast.provider';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}