{"version":3,"file":"bootkit-angular-components-toast.mjs","sources":["../../../projects/bootkit/components/toast/toast-ref.ts","../../../projects/bootkit/components/toast/toast.component.ts","../../../projects/bootkit/components/toast/toast.component.html","../../../projects/bootkit/components/toast/toast.service.ts","../../../projects/bootkit/components/toast/bootkit-angular-components-toast.ts"],"sourcesContent":["import { OverlayRef } from \"@angular/cdk/overlay\";\r\nimport { Subject, timer } from \"rxjs\";\r\n\r\nexport class ToastRef {\r\n    private _isOpen = true;\r\n    private _closedSubject = new Subject<any>();\r\n    public closed = this._closedSubject.asObservable();\r\n\r\n    constructor(private overlayRef: OverlayRef) {\r\n    }\r\n\r\n    public get isOpen() {\r\n        return this._isOpen;\r\n    }\r\n\r\n    public close() {\r\n        if (this._isOpen) {\r\n            this._closedSubject.next(0);\r\n            this._isOpen = false;\r\n\r\n            // Wait to ':leave' animation is done and then dispose the overlay\r\n            timer(100).subscribe(x => {\r\n                this.overlayRef.detach();\r\n                this.overlayRef.dispose();\r\n            });\r\n        }\r\n    }\r\n}\r\n","import { trigger, style, transition, animate } from '@angular/animations';\r\nimport { Component, OnInit, ChangeDetectionStrategy, DestroyRef, ChangeDetectorRef } from '@angular/core';\r\nimport { timer } from 'rxjs';\r\nimport { ToastConfig } from './types';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LocalizationService } from '@bootkit/angular/localization';\r\nimport { ToastRef } from './toast-ref';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n    selector: 'bk-toast',\r\n    exportAs: 'bkToast',\r\n    templateUrl: 'toast.component.html',\r\n    styleUrls: ['toast.component.scss'],\r\n    standalone: true,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [\r\n        CommonModule,\r\n    ],\r\n    animations: [\r\n        trigger('hostTrigger', [\r\n            transition(':enter', [\r\n                style({ opacity: 0, transform: 'scale(.95)' }),\r\n                animate('.1s', style({ opacity: '1', transform: 'scale(1)' })),\r\n            ]),\r\n            transition(':leave', [\r\n                style({ opacity: 1, transform: 'scale(1)' }),\r\n                animate('.1s', style({ opacity: 0, transform: 'scale(.95)' })),\r\n            ]),\r\n        ]),\r\n    ],\r\n})\r\nexport class ToastComponent implements OnInit {\r\n    _config!: ToastConfig;\r\n    _toastRef!: ToastRef;\r\n    protected _message?: string;\r\n    protected _title?: string;\r\n    protected _showToast = true;\r\n\r\n    constructor(\r\n        private _changeDetectorRef: ChangeDetectorRef,\r\n        private _destroyRef: DestroyRef,\r\n        private _ls: LocalizationService) {\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        var locale = this._ls.tryGetActive();\r\n        this._title = this._config.titleKey && locale ? locale.translate(this._config.titleKey) || this._config.titleKey : this._config.title;\r\n        this._message = this._config.messageKey && locale ? locale.translate(this._config.messageKey) || this._config.messageKey : this._config.message;\r\n\r\n        this._toastRef.closed.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(x => {\r\n            this._showToast = false;\r\n            this._changeDetectorRef.markForCheck();\r\n        })\r\n\r\n        timer(this._config?.duration ?? 3000).pipe(takeUntilDestroyed(this._destroyRef)).subscribe(x => {\r\n            this._toastRef.close();\r\n        });\r\n    }\r\n}\r\n","<div *ngIf=\"_showToast\"\r\n     class=\"toast show\"\r\n     [class]=\"['text-bg-' + (_config?.style ?? 'success')]\"\r\n     @hostTrigger>\r\n    <div class=\"toast-header\" *ngIf=\"_title\">\r\n        <span *ngIf=\"_config.icon\" class=\"me-2\" [ngClass]=\"_config.icon\"></span>\r\n        <strong class=\"me-auto\">{{_title}}</strong>\r\n        <!-- <small>11 mins ago</small> -->\r\n        <button *ngIf=\"_config?.closeButton == undefined || _config?.closeButton\"\r\n                type=\"button\"\r\n                class=\"btn-close\"\r\n                aria-label=\"Close\"\r\n                (click)=\"_toastRef.close()\">\r\n        </button>\r\n    </div>\r\n    <div class=\"toast-body\">\r\n        {{_message}}\r\n    </div>\r\n</div>","import { Overlay } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { Injectable, Injector } from '@angular/core';\r\nimport { ToastComponent } from './toast.component';\r\nimport { ToastConfig } from './types';\r\nimport { ToastRef } from './toast-ref';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ToastService {\r\n  private _currentToast: ToastRef;\r\n\r\n  constructor(private _overlayService: Overlay, private _injector: Injector) { }\r\n\r\n  open(messageKey: string, title?: string, titleKey?: string, style?: string): void;\r\n  open(config: ToastConfig): void;\r\n  open(p: any): void {\r\n    if (this._currentToast) {\r\n      this._currentToast.close();\r\n    }\r\n\r\n    const config: ToastConfig =\r\n      typeof p === 'object' ? p :\r\n        { messageKey: arguments[0], titleKey: arguments[1], style: arguments[2] } as ToastConfig;\r\n\r\n    var portal = new ComponentPortal(ToastComponent, null, this._injector);\r\n\r\n    // Position\r\n    var vertical = config.verticalPosition ?? 'top';\r\n    var horizontal = config.horizontalPosition ?? 'center';\r\n    var posStrategy = this._overlayService.position().global();\r\n    const padding = '1rem';\r\n\r\n    switch (vertical) {\r\n      case 'top':\r\n        posStrategy = posStrategy.top(padding)\r\n        break;\r\n      case 'bottom':\r\n        posStrategy = posStrategy.bottom(padding)\r\n        break;\r\n    }\r\n\r\n    switch (horizontal) {\r\n      case 'center':\r\n        posStrategy = posStrategy.centerHorizontally();\r\n        break;\r\n      case 'end':\r\n        posStrategy = posStrategy.end(padding);\r\n        break;\r\n      case 'start':\r\n        posStrategy = posStrategy.start(padding);\r\n        break;\r\n    }\r\n\r\n    var overlayRef = this._overlayService.create({\r\n      positionStrategy: posStrategy,\r\n    });\r\n\r\n    var componentRef = overlayRef.attach(portal);\r\n    componentRef.instance._config = config;\r\n    componentRef.instance._toastRef = this._currentToast = new ToastRef(overlayRef);\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}