{"version":3,"file":"hslayers-ng-common-toast.mjs","sources":["../../../projects/hslayers/common/toast/toast.service.ts","../../../projects/hslayers/common/toast/toast-item.component.ts","../../../projects/hslayers/common/toast/toast.component.ts","../../../projects/hslayers/common/toast/hslayers-ng-common-toast.ts"],"sourcesContent":["import {Injectable, TemplateRef, signal, inject} from '@angular/core';\n\nimport {HsConfig} from 'hslayers-ng/config';\nimport {HsLanguageService} from 'hslayers-ng/services/language';\nimport {ToastType} from './toast-item.component';\n\nexport interface Toast {\n  autohide?: boolean;\n  type?: ToastType;\n  delay?: number;\n  details?: string[];\n  header?: string;\n  serviceCalledFrom?: string;\n  textOrTpl?: string;\n  id?: string;\n}\n\nexport type customToastOptions = {\n  /**\n   * Disable text translation\n   */\n  disableLocalization?: boolean;\n  /**\n   * Type of toast message (success, danger, warning, info)\n   */\n  type?: ToastType;\n  /**\n   * Sets custom delay for the toast message\n   */\n  customDelay?: number;\n  /**\n   * Sets service name from where toast was called\n   */\n  serviceCalledFrom?: string;\n  /**\n   * Error details\n   */\n  details?: string[];\n  /**\n   * Whether the toast should automatically hide after delay\n   */\n  autohide?: boolean;\n};\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class HsToastService {\n  hsLanguageService = inject(HsLanguageService);\n  private hsConfig = inject(HsConfig);\n\n  private toastsSignal = signal<Toast[]>([]);\n\n  get toasts() {\n    return this.toastsSignal();\n  }\n\n  /**\n   * Callback method to remove Toast DOM element from view\n   * @param toast - Toast pop up\n   */\n  remove(toast: Toast): void {\n    this.toastsSignal.update((toasts) => toasts.filter((t) => t !== toast));\n  }\n\n  removeByText(text: string): void {\n    this.toastsSignal.update((toasts) =>\n      toasts.filter((t) => t.textOrTpl !== text),\n    );\n  }\n\n  /**\n   * @param textOrTpl - Text or a template message to display\n   * @param options - Toast window options\n   * Pushes new Toasts to array with content and options\n   */\n  show(textOrTpl: string | TemplateRef<any>, options: any = {}): void {\n    if (this.toasts.length >= 5) {\n      this.toastsSignal.update((toasts) => toasts.slice(-4));\n    }\n\n    const newToast = {textOrTpl, ...options, id: crypto.randomUUID()};\n\n    if (\n      !this.toasts.some(\n        (toast) =>\n          toast.textOrTpl === textOrTpl &&\n          toast?.serviceCalledFrom === options.serviceCalledFrom,\n      )\n    ) {\n      this.toastsSignal.update((toasts) => [...toasts, newToast]);\n    }\n  }\n\n  /**\n   * Creates new toast message with custom text and custom styling\n   * @param header - Header text to display\n   * @param text - Toast body text to display\n   * @param options - Custom options for the toast message (disableLocalization: boolean, toastStyleClasses: string, customDelay: number, serviceCalledFrom: string)\n   */\n  createToastPopupMessage(\n    header: string,\n    text: string,\n    options: customToastOptions = {},\n  ): void {\n    this.show(\n      options.disableLocalization\n        ? text\n        : this.hsLanguageService.getTranslation(text, undefined),\n      {\n        header: options.disableLocalization\n          ? header\n          : this.hsLanguageService.getTranslation(header, undefined),\n        delay:\n          options.customDelay || (this.hsConfig.errorToastDuration ?? 7000),\n        autohide: true,\n        type: options.type || 'danger',\n        serviceCalledFrom: options.serviceCalledFrom,\n        details:\n          options.details?.map((detail) =>\n            this.hsLanguageService.getTranslation(detail, undefined),\n          ) || [],\n      },\n    );\n  }\n}\n","import {\n  AfterContentInit,\n  Component,\n  EventEmitter,\n  Output,\n  computed,\n  input,\n  signal,\n} from '@angular/core';\n\nexport type ToastType = 'success' | 'danger' | 'warning' | 'info';\n\n/**\n * Represents an individual toast notification with customizable content,\n * appearance, and behavior.\n */\n@Component({\n  selector: 'hs-toast-item',\n  standalone: true,\n  template: `\n    <div\n      class=\"toast show d-flex align-items-center border-0\"\n      [class]=\"toastClass()\"\n      [class.toast-hidden]=\"isHiding()\"\n      role=\"alert\"\n      [style.maxHeight]=\"maxHeight()\"\n      (transitionend)=\"onTransitionEnd($event)\"\n    >\n      <div class=\"toast-body position-relative gap-3\">\n        <div class=\"toast-icon\">\n          <i [class]=\"iconClass()\" aria-hidden=\"true\"></i>\n        </div>\n        <div class=\"toast-content\">\n          <strong class=\"me-auto\">{{ header() }}</strong>\n          <div class=\"toast-content-body\">\n            <p class=\"mb-0 mt-2\">{{ text() }}</p>\n            @if (details()?.length) {\n              <ul class=\"mt-2 mb-0 ps-3\">\n                @for (detail of details(); track detail) {\n                  <li>{{ detail }}</li>\n                }\n              </ul>\n            }\n          </div>\n        </div>\n        <button\n          type=\"button\"\n          class=\"btn-close position-absolute top-0 end-0 mt-2 me-2\"\n          aria-label=\"Close\"\n          (click)=\"hideToast()\"\n        ></button>\n      </div>\n    </div>\n  `,\n  styleUrls: ['./toast-item.component.scss'],\n})\nexport class HsToastItemComponent implements AfterContentInit {\n  /** Header text displayed at the top of the toast */\n  readonly header = input<string>('');\n  /** Main message text of the toast */\n  readonly text = input<string>('');\n  /** Optional array of detail messages shown as bullet points */\n  readonly details = input<string[]>([]);\n  /** Visual style of the toast (success, danger, warning, info) */\n  readonly type = input<ToastType>('danger');\n  /** Duration in milliseconds before the toast auto-hides */\n  readonly delay = input<number>(5000);\n  readonly autohide = input<boolean>(true);\n\n  @Output() hidden = new EventEmitter<void>();\n\n  private timeoutID: any;\n  readonly isHiding = signal<boolean>(false);\n\n  maxHeight = computed(() =>\n    this.details()?.length > 0 ? `${this.details().length + 8}rem` : '18rem',\n  );\n\n  /** Computed CSS class based on toast type */\n  toastClass = computed(() => `bg-${this.type()}`);\n\n  /** Computed icon class based on toast type */\n  iconClass = computed(() => {\n    switch (this.type()) {\n      case 'success':\n        return 'fa-solid fa-square-check';\n      case 'danger':\n        return 'fa-solid fa-triangle-exclamation';\n      case 'warning':\n        return 'fa-solid fa-triangle-exclamation';\n      case 'info':\n        return 'fa-solid fa-circle-info';\n      default:\n        return '';\n    }\n  });\n\n  ngAfterContentInit() {\n    this.show();\n  }\n\n  /** Trigger the hiding animation */\n  hideToast(): void {\n    this.isHiding.set(true);\n  }\n\n  /** Handle transition end events for smooth hiding */\n  onTransitionEnd(event: TransitionEvent): void {\n    if (event.propertyName === 'opacity' && this.isHiding()) {\n      this.hide();\n    }\n  }\n\n  /** Complete the hiding process and emit event */\n  hide(): void {\n    this.clearTimeout();\n    this.hidden.emit();\n  }\n\n  /** Initialize the toast display state */\n  private show(): void {\n    this.isHiding.set(false);\n    if (this.autohide()) {\n      this.initTimeout();\n    }\n  }\n\n  /** Set up auto-hide timer if enabled */\n  private initTimeout() {\n    if (this.autohide() && !this.timeoutID) {\n      this.timeoutID = setTimeout(() => this.hideToast(), this.delay());\n    }\n  }\n\n  /** Clean up auto-hide timer */\n  private clearTimeout() {\n    if (this.timeoutID) {\n      clearTimeout(this.timeoutID);\n      this.timeoutID = null;\n    }\n  }\n}\n","import {Component, computed, input, inject} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\n\nimport {HsToastService} from './toast.service';\nimport {HsToastItemComponent} from './toast-item.component';\nimport {HsConfig, ToastPosition} from 'hslayers-ng/config';\n\n@Component({\n  selector: 'hs-toast',\n  standalone: true,\n  imports: [HsToastItemComponent],\n  template: `\n    @for (toast of hsToastService.toasts; track toast) {\n      <hs-toast-item\n        [header]=\"toast.header\"\n        [text]=\"toast.textOrTpl\"\n        [details]=\"toast.details\"\n        [type]=\"toast.type\"\n        [delay]=\"toast.delay\"\n        [autohide]=\"toast.autohide\"\n        (hidden)=\"hsToastService.remove(toast)\"\n      />\n    }\n  `,\n  styleUrls: ['./toast.component.scss'],\n  host: {\n    '[class]': 'positionClasses()',\n  },\n})\nexport class HsToastComponent {\n  hsToastService = inject(HsToastService);\n  private hsConfig = inject(HsConfig);\n\n  position = input<ToastPosition>('bottom-center');\n\n  /**\n   * Signal that tracks config changes\n   */\n  private configChanges = toSignal(this.hsConfig.configChanges, {\n    initialValue: undefined,\n  });\n\n  /**\n   * Computes the CSS classes for positioning the toast container\n   * Combines position class with positioning based on anchor point\n   * Recomputes when config is updated through configChanges\n   */\n  positionClasses = computed(() => {\n    this.configChanges();\n    const containerPosition = this.position();\n    const positionType =\n      this.hsConfig.toastAnchor === 'screen'\n        ? 'position-fixed'\n        : 'position-absolute';\n    return `${containerPosition} ${positionType}`;\n  });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}