{"version":3,"file":"acorex-components-alert.mjs","sources":["../../../../packages/components/alert/src/lib/alert.component.ts","../../../../packages/components/alert/src/lib/alert.component.html","../../../../packages/components/alert/src/lib/alert.module.ts","../../../../packages/components/alert/src/acorex-components-alert.ts"],"sourcesContent":["import { AXClosableComponent, AXComponent, AXEvent, MXColorComponent } from '@acorex/cdk/common';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { isBrowser } from '@acorex/core/platform';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n  afterNextRender,\n  Component,\n  contentChild,\n  effect,\n  HostBinding,\n  model,\n  output,\n  signal,\n  ViewEncapsulation,\n} from '@angular/core';\n\n/**\n * The Alert component is used to display notifications or alerts to users.\n *\n * @category Components\n */\n@Component({\n  selector: 'ax-alert',\n  templateUrl: './alert.component.html',\n  styleUrls: ['./alert.component.css'],\n  inputs: ['color'],\n  outputs: ['colorChange'],\n\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    { provide: AXClosableComponent, useExisting: AXAlertComponent },\n    { provide: AXComponent, useExisting: AXAlertComponent },\n  ],\n  imports: [NgTemplateOutlet],\n})\nexport class AXAlertComponent extends MXColorComponent {\n  /**\n   *  @ignore\n   */\n  axIcon = contentChild<AXDecoratorIconComponent>('ax-icon');\n  /**\n   *  @ignore\n   */\n  axTitle = contentChild<AXDecoratorGenericComponent>('ax-title');\n  /**\n   *  @ignore\n   */\n  axContent = contentChild<AXDecoratorGenericComponent>('ax-content');\n  /**\n   *  @ignore\n   */\n  axFooter = contentChild<AXDecoratorGenericComponent>('ax-footer');\n\n  /**\n   *  @ignore\n   */\n  protected showInline = signal(false);\n\n  /**\n   * Emits an event when the alert component is closed.\n   *\n   * @event\n   */\n  onClosed = output<AXEvent>();\n\n  /**\n   *  @ignore\n   */\n  private customIcon = signal('');\n\n  /**\n   *  @ignore\n   */\n  private _timeOutRef: number;\n\n  /**\n   * Sets the duration (in milliseconds) after which the alert will automatically close.\n   *\n   * @defaultValue 0\n   */\n  timeOut = model<number>(0);\n\n  /**\n   *  @ignore\n   */\n  //TODO: Check Console for  effect() can only be used within an injection context such as a constructor, a factory function, a field initializer, or a function used with `runInInjectionContext`\n  timeOutEffect = () => {\n    effect(() => {\n      if (this.timeOut()) {\n        clearTimeout(this._timeOutRef);\n        this._timeOutRef = window.setTimeout(() => {\n          this.close();\n        }, this.timeOut());\n      }\n    });\n  };\n\n  /**\n   *  @ignore\n   */\n  constructor() {\n    super();\n    afterNextRender(() => {\n      this.onOptionChanged.subscribe(this._handleOnOptionChanged.bind(this));\n      this._setLayout();\n      this.customIcon.set(this.axIcon()?.icon);\n    });\n    this.timeOutEffect();\n  }\n\n  /**\n   *  @ignore\n   */\n  private _setLayout() {\n    this._setIcon();\n    this.showInline.set(this.axContent() == null && this.axFooter() == null);\n    this.cdr.markForCheck();\n  }\n\n  /**\n   *  @ignore\n   */\n  protected _handleOnOptionChanged() {\n    this._setIcon();\n  }\n\n  /**\n   *  @ignore\n   */\n  private _setIcon() {\n    if (!this.axIcon() || this.axIcon().getHostElement().firstElementChild) return;\n\n    switch (this.color) {\n      case 'ax-success':\n        this.axIcon().icon = 'ax-icon ax-icon-check-circle';\n        break;\n      case 'ax-danger':\n        this.axIcon().icon = 'ax-icon ax-icon-error';\n        break;\n      case 'ax-warning':\n        this.axIcon().icon = 'ax-icon ax-icon-warning';\n        break;\n      default:\n        this.axIcon().icon = this.customIcon() || 'ax-icon ax-icon-info';\n        break;\n    }\n  }\n\n  /**\n   * Removes the alert from the container after a transition effect.\n   *\n   * @returns void - No return value. The alert is removed from the DOM and the onClosed event is emitted.\n   */\n  close(): void {\n    if (isBrowser()) {\n      const host = this.getHostElement();\n      host.parentElement?.removeChild(host);\n      this.onClosed.emit({\n        component: this,\n      });\n    }\n  }\n\n  /**\n   *  @ignore\n   */\n  @HostBinding('class')\n  get __hostClass(): string {\n    return `ax-alert ax-none ${this.color}`;\n  }\n}\n","@if (showInline()) {\n  <div class=\"ax-alert-inline\">\n    <div class=\"ax-alert-icon ax-icon-solid\">\n      <ng-container [ngTemplateOutlet]=\"icon\"></ng-container>\n    </div>\n    <div class=\"ax-alert-title\">\n      <ng-container [ngTemplateOutlet]=\"title\"></ng-container>\n    </div>\n    <div class=\"ax-alert-buttons\">\n      <ng-container [ngTemplateOutlet]=\"buttons\"></ng-container>\n    </div>\n    <ng-container [ngTemplateOutlet]=\"closeButton\"></ng-container>\n  </div>\n} @else {\n  <div class=\"ax-alert-block\">\n    <div class=\"ax-alert-icon ax-icon-solid\">\n      <ng-container [ngTemplateOutlet]=\"icon\"></ng-container>\n    </div>\n    <div class=\"ax-alert-content\">\n      <div class=\"ax-alert-title\">\n        <ng-container [ngTemplateOutlet]=\"title\"></ng-container>\n      </div>\n      <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n      <ng-container [ngTemplateOutlet]=\"footer\"></ng-container>\n    </div>\n    <div class=\"ax-alert-close ax-sm\">\n      <ng-container [ngTemplateOutlet]=\"closeButton\"></ng-container>\n    </div>\n  </div>\n}\n\n@if (timeOut()) {\n  <div class=\"ax-alert-progress\" [style.animation-duration.ms]=\"timeOut()\"></div>\n}\n\n<ng-template #buttons>\n  <ng-content select=\"ax-button\"> </ng-content>\n</ng-template>\n<ng-template #closeButton>\n  <ng-content select=\"ax-close-button\"> </ng-content>\n</ng-template>\n<ng-template #title>\n  <ng-content select=\"ax-title\"> </ng-content>\n</ng-template>\n<ng-template #icon>\n  <ng-content select=\"ax-icon\"> </ng-content>\n</ng-template>\n<ng-template #content>\n  <ng-content select=\"ax-content\"> </ng-content>\n</ng-template>\n<ng-template #footer>\n  <ng-content select=\"ax-footer\"> </ng-content>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { AXAlertComponent } from './alert.component';\n\n@NgModule({\n  imports: [AXAlertComponent],\n  exports: [AXAlertComponent],\n})\nexport class AXAlertModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}