{"version":3,"file":"easy-angular-alerts.mjs","sources":["../../../projects/easy-angular-alerts/src/lib/alert.component.ts","../../../projects/easy-angular-alerts/src/lib/alert.service.ts","../../../projects/easy-angular-alerts/src/public-api.ts","../../../projects/easy-angular-alerts/src/easy-angular-alerts.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit, OnChanges, SimpleChanges, Output, EventEmitter } from '@angular/core';\n\n@Component({\n  selector: 'eaa-alert',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <div *ngIf=\"visible\" [ngStyle]=\"getStyle()\" class=\"alert\">\n      <div class=\"content\">\n        <div class=\"message\" [ngStyle]=\"{'font-size': fontSize, 'font-family': fontFamily}\">\n          {{ message }}\n        </div>\n        <div *ngIf=\"type === 'confirmation'\" class=\"confirmation-buttons\">\n          <button (click)=\"confirm()\">\n            <i class=\"fa fa-check\"></i>\n          </button>\n          <button (click)=\"cancel()\">\n            <i class=\"fa fa-times\"></i>\n          </button>\n        </div>\n        <div *ngIf=\"type === 'closeable'\" class=\"close-button\">\n          <button (click)=\"close()\">\n            <i class=\"fa fa-times\"></i>\n          </button>\n        </div>\n      </div>\n    </div>\n  `,\n  styles: [`\n    @keyframes fadeIn {\n      from { opacity: 0; }\n      to { opacity: 1; }\n    }\n\n    @keyframes fadeOut {\n      from { opacity: 1; }\n      to { opacity: 0; }\n    }\n\n    .alert {\n      padding: 1em 1em;\n      border-radius: 1em;\n      z-index: 1000;\n      display: flex;\n      align-items: center;\n      box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n      margin-bottom: 1em;\n      width: auto;\n      margin-left: 1em;\n      margin-right: 1em;\n      text-align: center;\n      font-weight: 100;\n      opacity: 0; /* Initially hidden */\n      animation: fadeIn 1s forwards; /* Fade in over 2 seconds */\n    }\n    .alert.fadeOut {\n      animation: fadeOut 1s forwards; /* Fade out over 4 seconds */\n    }\n    .alert button {\n      margin-left: 0.07em;\n      border: none;\n      padding: 0.5em 0.5em;\n      border-radius: 0.25em;\n      cursor: pointer;\n      background-color: inherit; /* Match button background color to alert background color */\n    }\n    .alert button i {\n      font-size: 1.2em;\n    }\n    .content {\n      flex: 1;\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n    }\n    .message {\n      flex: 1;\n      word-wrap: break-word;\n      padding-left: 0.5em;\n      padding-right: 0.5em;\n      text-align: center;\n      font-weight: 100;\n    }\n    .confirmation-buttons {\n      display: flex;\n      gap: 0.07em;\n      margin-left: auto;\n    }\n    .close-button {\n      cursor: pointer;\n      transition: background-color 0.3s;\n      color: black; /* Ensure the X is black */\n    }\n  `]\n})\nexport class AlertComponent implements OnInit, OnChanges {\n  @Input() type: 'simple' | 'error' | 'confirmation' | 'closeable' = 'simple';\n  @Input() message: string = '';\n  @Input() backgroundColor?: string;\n  @Input() textColor?: string;\n  @Input() duration: number = 3000;\n  @Input() verticalPosition: 'top' | 'center' | 'bottom' = 'bottom';\n  @Input() horizontalPosition: 'left' | 'center' | 'right' = 'center';\n  @Input() fontSize: string = '.9em';\n  @Input() fontFamily: string = 'Newsreader, sans-serif';\n  @Input() borderStyle: string = 'none';\n  @Input() width: string = 'auto';\n  @Input() height: string = 'auto';\n  @Input() boxShadow: string = 'none';\n  @Output() confirmed = new EventEmitter<void>();\n  @Output() cancelled = new EventEmitter<void>();\n\n  visible: boolean = true;\n\n  ngOnInit() {\n    if (!this.type || !this.message) {\n      console.error('Both type and message are required for the alert.');\n      this.visible = false;\n      return;\n    }\n\n    const allowedTypes = ['simple', 'error', 'confirmation', 'closeable'];\n    if (!allowedTypes.includes(this.type)) {\n      console.error(`Invalid alert type: ${this.type}. Allowed types are: ${allowedTypes.join(', ')}.`);\n      this.visible = false;\n      return;\n    }\n\n    if (this.type === 'confirmation' && this.duration) {\n      console.warn('Duration is not applicable for confirmation alerts. Setting duration to 0.');\n      this.duration = 0;\n    }\n\n    this.setDefaults();\n    if (this.duration && this.type !== 'confirmation') {\n      setTimeout(() => this.startFadeOut(), this.duration);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    this.setDefaults();\n  }\n\n  setDefaults() {\n    if (this.type === 'confirmation') {\n      this.duration = 0; // Always set duration to 0 for confirmation alerts\n    }\n\n    if (!this.backgroundColor) {\n      if (this.type === 'simple') {\n        this.backgroundColor = '#DCFFE0';\n        this.borderStyle = this.borderStyle || '1pt solid #61A868';\n      } else if (this.type === 'error') {\n        this.backgroundColor = '#FFA3A3';\n        this.borderStyle = this.borderStyle || '1pt solid #C50E0E';\n      } else if (this.type === 'confirmation') {\n        this.backgroundColor = '#e6effa';\n        this.borderStyle = this.borderStyle || '1pt solid #133C8B';\n      } else if (this.type === 'closeable') {\n        this.backgroundColor = '#fef8eb';\n        this.borderStyle = this.borderStyle || '1pt solid #BDB505';\n      }\n    }\n\n    if (!this.textColor) {\n      this.textColor = 'black';\n    }\n  }\n\n  getStyle() {\n    const styles: { [key: string]: string } = {\n      backgroundColor: this.backgroundColor!,\n      color: this.textColor!,\n      position: 'fixed',\n      fontSize: this.fontSize,\n      fontFamily: this.fontFamily,\n      border: this.borderStyle, // Ensure borderStyle is applied\n      width: this.width,\n      height: this.height, // Ensure height is applied\n      boxShadow: this.boxShadow,\n      borderRadius: '1em',\n      margin: '0.5em',\n      padding: '0.5em 1em'\n    };\n\n    switch (this.verticalPosition) {\n      case 'top':\n        styles['top'] = '10px';\n        styles['transform'] = this.horizontalPosition === 'center' ? 'translateX(-50%)' : '';\n        break;\n      case 'center':\n        styles['top'] = '50%';\n        styles['transform'] = this.horizontalPosition === 'center' ? 'translate(-50%, -50%)' : 'translateY(-50%)';\n        break;\n      case 'bottom':\n        styles['bottom'] = '10px';\n        styles['transform'] = this.horizontalPosition === 'center' ? 'translateX(-50%)' : '';\n        break;\n    }\n\n    switch (this.horizontalPosition) {\n      case 'left':\n        styles['left'] = '10px';\n        break;\n      case 'center':\n        styles['left'] = '50%';\n        break;\n      case 'right':\n        styles['right'] = '10px';\n        break;\n    }\n\n    return styles;\n  }\n\n  startFadeOut() {\n    const alertElement = document.querySelector('.alert');\n    if (alertElement) {\n      alertElement.classList.add('fadeOut');\n      setTimeout(() => this.fadeOut(), 1000); // Hide the element after the animation completes\n    }\n  }\n\n  fadeOut() {\n    this.visible = false;\n  }\n\n  confirm() {\n    this.startFadeOut();\n    this.confirmed.emit();\n  }\n\n  cancel() {\n    this.startFadeOut();\n    this.cancelled.emit();\n  }\n\n  close() {\n    this.startFadeOut();\n  }\n}\n","import { Injectable, ApplicationRef, Injector, ViewContainerRef, ComponentRef } from '@angular/core';\nimport { AlertComponent } from './alert.component';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class AlertService {\n  private viewContainerRef!: ViewContainerRef;\n  private alertComponentRef: ComponentRef<AlertComponent> | null = null;\n\n  constructor(private appRef: ApplicationRef, private injector: Injector) {}\n\n  setViewContainerRef(viewContainerRef: ViewContainerRef) {\n    this.viewContainerRef = viewContainerRef;\n  }\n\n  showAlert(config: Partial<Record<keyof AlertComponent, any>>, onConfirm?: () => void, onCancel?: () => void) {\n    this.removeAlert(); // Ensure any existing alert is removed before showing a new one\n\n    this.alertComponentRef = this.viewContainerRef.createComponent(AlertComponent, { injector: this.injector });\n\n    if (config) {\n      Object.assign(this.alertComponentRef.instance, config);\n    }\n\n    if (onConfirm) {\n      this.alertComponentRef.instance.confirmed.subscribe(() => {\n        onConfirm();\n        this.removeAlert();\n      });\n    }\n\n    if (onCancel) {\n      this.alertComponentRef.instance.cancelled.subscribe(() => {\n        onCancel();\n        this.removeAlert();\n      });\n    }\n  }\n\n  private removeAlert() {\n    if (this.alertComponentRef) {\n      this.alertComponentRef.destroy();\n      this.alertComponentRef = null;\n    }\n  }\n}\n","/*\n * Public API Surface of easy-angular-alerts\n */\n\nexport * from './lib/alert.service';\nexport * from './lib/alert.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}