{"version":3,"file":"euro-ombudsman-ngx-modal-dialog.mjs","sources":["../../src/modal-dialog.component.ts","../../src/modal-dialog-instance.service.ts","../../src/modal-dialog.service.ts","../../src/simple-modal.component.ts","../../src/modal-dialog.module.ts","../../src/public-api.ts","../../src/euro-ombudsman-ngx-modal-dialog.ts"],"sourcesContent":["import {\n  Component,\n  ComponentRef,\n  ElementRef,\n  HostListener,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport {\n  IModalDialog,\n  IModalDialogButton,\n  IModalDialogOptions,\n  IModalDialogSettings,\n  ModalDialogOnAction\n} from './modal-dialog.interface';\nimport { from, Observable, Subject } from 'rxjs';\n\n/**\n * Modal dialog component\n */\n@Component({\n  selector: 'modal-dialog',\n  styles: [`\n      @-moz-keyframes shake {\n        from, to                { transform: translate3d(0, 0, 0); }\n        10%, 30%, 50%, 70%, 90% { transform: translate3d(-2rem, 0, 0); }\n        20%, 40%, 60%, 80%      { transform: translate3d(2rem, 0, 0); }\n      }\n      @-webkit-keyframes shake {\n        from, to                { transform: translate3d(0, 0, 0); }\n        10%, 30%, 50%, 70%, 90% { transform: translate3d(-2rem, 0, 0); }\n        20%, 40%, 60%, 80%      { transform: translate3d(2rem, 0, 0); }\n      }\n      @keyframes shake {\n        from, to                { transform: translate3d(0, 0, 0); }\n        10%, 30%, 50%, 70%, 90% { transform: translate3d(-2rem, 0, 0); }\n        20%, 40%, 60%, 80%      { transform: translate3d(2rem, 0, 0); }\n      }\n\n      .ngx-modal {\n        display: flex;\n      }\n      .ngx-modal-shake {\n        backface-visibility: hidden;\n        -webkit-animation-duration: 0.5s;\n        -moz-animation-duration: 0.5s;\n        animation-duration: 0.5s;\n        -webkit-animation-fill-mode: both;\n        -moz-animation-fill-mode: both;\n        animation-fill-mode: both;\n        -webkit-animation-iteration-count: infinite;\n        -moz-animation-iteration-count: infinite;\n        animation-iteration-count: infinite;\n        -webkit-animation-name: shake;\n        -moz-animation-name: shake;\n        animation-name: shake;\n      }\n  `],\n  template: `\n    @if (settings.overlayClass && showOverlay) {\n      <div [ngClass]=\"[settings.overlayClass, animateOverlayClass]\"></div>\n    }\n    <div [ngClass]=\"[settings.modalClass, animateModalClass]\" #dialog>\n      <div [ngClass]=\"settings.modalDialogClass\">\n        <div [ngClass]=\"[ showAlert ? settings.alertClass : '', settings.contentClass]\">\n          <div [ngClass]=\"settings.headerClass\">\n            <h4 [ngClass]=\"settings.headerTitleClass\">{{title}}</h4>\n            @if (!actionButtons || !actionButtons.length) {\n              <button (click)=\"close()\" type=\"button\"\n                [title]=\"settings.closeButtonTitle\"\n                [ngClass]=\"settings.closeButtonClass\">\n              </button>\n            }\n          </div>\n          <div [ngClass]=\"settings.bodyClass\">\n            <i #modalDialogBody></i>\n          </div>\n          @if (actionButtons && actionButtons.length) {\n            <div [ngClass]=\"settings.footerClass\">\n              @for (button of actionButtons; track button) {\n                <button (click)=\"doAction(button.onAction)\"\n                  [ngClass]=\"button.buttonClass || settings.buttonClass\">{{button.text}}\n                </button>\n              }\n            </div>\n          }\n        </div>\n      </div>\n    </div>\n    `,\n  standalone: false\n})\nexport class ModalDialogComponent implements IModalDialog, OnDestroy, OnInit {\n  @ViewChild('modalDialogBody', { read: ViewContainerRef, static: true }) public dynamicComponentTarget: ViewContainerRef;\n  @ViewChild('dialog') private dialogElement: ElementRef;\n  public reference: ComponentRef<IModalDialog>;\n\n  /** Modal dialog style settings */\n  public settings: IModalDialogSettings = {\n    overlayClass: 'modal-backdrop fade',\n    overlayAnimationTriggerClass: 'show',\n    modalClass: 'modal ngx-modal fade',\n    modalAnimationTriggerClass: 'show',\n    modalDialogClass: 'modal-dialog modal-dialog-centered',\n    contentClass: 'modal-content',\n    headerClass: 'modal-header',\n    headerTitleClass: 'modal-title',\n    closeButtonClass: 'close glyphicon glyphicon-remove',\n    closeButtonTitle: 'CLOSE',\n    bodyClass: 'modal-body',\n    footerClass: 'modal-footer',\n    alertClass: 'ngx-modal-shake',\n    alertDuration: 250,\n    notifyWithAlert: true,\n    buttonClass: 'btn btn-primary'\n  };\n  public actionButtons: IModalDialogButton[];\n  public title: string;\n  public onClose: () => Promise<any> | Observable<any> | boolean;\n\n  public showAlert: boolean = false;\n  public animateOverlayClass = '';\n  public animateModalClass = '';\n\n  public showOverlay = false;\n\n  private _inProgress = false;\n  private _alertTimeout: number;\n  private _childInstance: any;\n  private _closeDialog$: Subject<void>;\n\n  /**\n   * CTOR\n   * @param _element\n   */\n  constructor(protected _element: ElementRef) {\n  }\n\n  @HostListener('click', ['$event'])\n  onClick(event: any): void {\n    if (event.target !== this.dialogElement.nativeElement) {\n      return;\n    }\n    this.close();\n  }\n\n  /**\n   * Initialize dialog with reference to instance and options\n   * @param reference\n   * @param options\n   */\n  dialogInit(reference: ComponentRef<IModalDialog>, options: Partial<IModalDialogOptions<any>> = {}) {\n    this.reference = reference;\n\n    // inject component\n    if (options.childComponent) {\n      const componentRef = this.dynamicComponentTarget.createComponent(options.childComponent) as ComponentRef<IModalDialog>;\n      this._childInstance = componentRef.instance as IModalDialog;\n\n      this._closeDialog$ = new Subject<void>();\n      this._closeDialog$.subscribe(() => {\n        this._finalizeAndDestroy();\n      });\n\n      options.closeDialogSubject = this._closeDialog$;\n\n      this._childInstance['dialogInit'](componentRef, options);\n      document.activeElement != null ?\n        (document.activeElement as HTMLElement).blur() :\n        (document.body as HTMLElement).blur();\n    }\n    // set options\n    this._setOptions(options);\n  }\n\n  ngOnInit() {\n    // a trick to defer css animations\n    setTimeout(() => {\n      this.animateOverlayClass = this.settings.overlayAnimationTriggerClass;\n      this.animateModalClass = this.settings.modalAnimationTriggerClass;\n    }, 0);\n  }\n\n  /**\n   * Cleanup on destroy\n   */\n  ngOnDestroy() {\n    // run animations\n    this.animateOverlayClass = '';\n    this.animateModalClass = '';\n\n    // cleanup listeners\n    if (this._alertTimeout) {\n      clearTimeout(this._alertTimeout);\n      this._alertTimeout = null;\n    }\n\n    if (this._closeDialog$) {\n      this._closeDialog$.unsubscribe();\n    }\n  }\n\n  /**\n   * Run action defined on action button\n   * @param action\n   */\n  doAction(action?: ModalDialogOnAction) {\n    // disable multi clicks\n    if (this._inProgress) {\n      return;\n    }\n    this._inProgress = true;\n    this._closeIfSuccessful(action);\n  }\n\n  /**\n   * Method to run on close\n   * if action buttons are defined, it will not close\n   */\n  close() {\n    if (this._inProgress) {\n      return;\n    }\n    if (this.actionButtons && this.actionButtons.length) {\n      return;\n    }\n    this._inProgress = true;\n\n    if (this.onClose) {\n      this._closeIfSuccessful(this.onClose);\n      return;\n    }\n    this._finalizeAndDestroy();\n  }\n\n  /**\n   * Pass options from dialog setup to component\n   * @param  {IModalDialogOptions} options?\n   */\n  private _setOptions(options: Partial<IModalDialogOptions<any>>) {\n\n    if (options.onClose && options.actionButtons && options.actionButtons.length) {\n      throw new Error(`OnClose callback and ActionButtons are not allowed to be defined on the same dialog.`);\n    }\n    // set references\n    this.title = (options && options.title) || '';\n    this.onClose = (options && options.onClose) || null;\n    this.actionButtons = (this._childInstance && this._childInstance['actionButtons']) ||\n      (options && options.actionButtons) || null;\n    if (options && options.settings) {\n      Object.assign(this.settings, options.settings);\n    }\n  }\n\n  /**\n   * Close if successful\n   * @param callback\n   */\n  private _closeIfSuccessful(callback: ModalDialogOnAction) {\n    if (!callback) {\n      return this._finalizeAndDestroy();\n    }\n\n    let response = callback();\n    if (typeof response === 'boolean') {\n      if (response) {\n        return this._finalizeAndDestroy();\n      }\n      return this._triggerAlert();\n    }\n    if (this.isPromise(response)) {\n      response = from(response);\n    }\n    if (this.isObservable(response)) {\n      response.subscribe(() => {\n        this._finalizeAndDestroy();\n      }, () => {\n        this._triggerAlert();\n      });\n    } else {\n      this._inProgress = false;\n    }\n  }\n\n  private _finalizeAndDestroy() {\n    this._inProgress = false;\n    this.reference.destroy();\n  }\n\n  private _triggerAlert() {\n    if (this.settings.notifyWithAlert) {\n      this.showAlert = true;\n      this._alertTimeout = window.setTimeout(() => {\n        this.showAlert = false;\n        this._inProgress = false;\n        clearTimeout(this._alertTimeout);\n        this._alertTimeout = null;\n      }, this.settings.alertDuration);\n    }\n  }\n\n  private isPromise<T>(value: any | Promise<T>): value is Promise<T> {\n    return value && typeof (<any>value).subscribe !== 'function' && typeof (value as any).then === 'function';\n  }\n\n  private isObservable<T>(value: any | Observable<T>): value is Observable<T> {\n    return value && typeof (<any>value).subscribe === 'function';\n  }\n}\n","import { ComponentRef, Injectable } from '@angular/core';\nimport { ModalDialogComponent } from './modal-dialog.component';\n\n@Injectable()\nexport class ModalDialogInstanceService {\n  /**\n   * Used to make sure there is exactly one instance of Modal Dialog\n   */\n  private componentRefs: ComponentRef<ModalDialogComponent>[] = [];\n\n  /**\n   * Closes existing modal dialog\n   */\n  closeAnyExistingModalDialog() {\n    while (this.componentRefs.length) {\n      this.componentRefs[this.componentRefs.length - 1].destroy();\n    }\n  }\n\n  /**\n   * Save component ref for future comparison\n   * @param componentRef\n   */\n  saveExistingModalDialog(componentRef: ComponentRef<ModalDialogComponent>) {\n    // remove overlay from top element\n    this.setOverlayForTopDialog(false);\n    // add new component\n    this.componentRefs = [...this.componentRefs, componentRef];\n    componentRef.instance.showOverlay = true;\n\n    componentRef.onDestroy(() => {\n      this.componentRefs.pop();\n      this.setOverlayForTopDialog(true);\n    });\n  }\n\n  setOverlayForTopDialog(value: boolean) {\n    if (this.componentRefs.length) {\n      this.componentRefs[this.componentRefs.length - 1].instance.showOverlay = value;\n    }\n  }\n}\n","import { Injectable, ViewContainerRef } from '@angular/core';\nimport { ModalDialogComponent } from './modal-dialog.component';\nimport { IModalDialogOptions } from './modal-dialog.interface';\nimport { ModalDialogInstanceService } from './modal-dialog-instance.service';\n\n@Injectable()\nexport class ModalDialogService {\n  /**\n   * CTOR\n   * @param modalDialogInstanceService\n   */\n  constructor(private modalDialogInstanceService: ModalDialogInstanceService) {\n  }\n\n  /**\n   * Open dialog in given target element with given options\n   * @param  {ViewContainerRef} target\n   * @param  {IModalDialogOptions} options?\n   */\n  openDialog(target: ViewContainerRef, options: Partial<IModalDialogOptions<any>> = {}) {\n    if (!options.placeOnTop) {\n      this.modalDialogInstanceService.closeAnyExistingModalDialog();\n    }\n\n    const componentRef = target.createComponent(ModalDialogComponent);\n    componentRef.instance.dialogInit(componentRef, options);\n\n    this.modalDialogInstanceService.saveExistingModalDialog(componentRef);\n  }\n}\n","import { Component, ComponentRef } from '@angular/core';\nimport { IModalDialog, IModalDialogOptions } from './modal-dialog.interface';\n\nexport interface ISimpleModalDataOptions {\n  text: string;\n}\n\n@Component({\n  selector: 'simple-modal-dialog',\n  template: ``,\n  styles: [':host { display: block; }'],\n  host: {\n    '[innerHTML]': 'text'\n  },\n  standalone: false\n})\nexport class SimpleModalComponent implements IModalDialog {\n  text: string;\n\n  /**\n   * Initialize dialog with simple HTML content\n   * @param {ComponentRef<IModalDialog>} reference\n   * @param {Partial<IModalDialogOptions>} options\n   */\n  dialogInit(reference: ComponentRef<IModalDialog>, options: Partial<IModalDialogOptions<ISimpleModalDataOptions>>) {\n    if (!options.data) {\n      throw new Error(`Data information for simple modal dialog is missing`);\n    }\n    this.text = options.data.text;\n  }\n}\n","// components and directives\nimport { ModalDialogComponent } from './modal-dialog.component';\nimport { ModalDialogService } from './modal-dialog.service';\nimport { SimpleModalComponent } from './simple-modal.component';\nimport { ModalDialogInstanceService } from './modal-dialog-instance.service';\n// modules\nimport { CommonModule } from '@angular/common';\nimport { NgModule, ModuleWithProviders, InjectionToken, SkipSelf, Optional } from '@angular/core';\n\n/**\n * Guard to make sure we have single initialization of forRoot\n * @type {InjectionToken<ModalDialogModule>}\n */\nexport const MODAL_DIALOG_FORROOT_GUARD = new InjectionToken<ModalDialogModule>('MODAL_DIALOG_FORROOT_GUARD');\n\n@NgModule({\n    imports: [CommonModule],\n    declarations: [ModalDialogComponent, SimpleModalComponent],\n    exports: [ModalDialogComponent, SimpleModalComponent],\n    providers: [ModalDialogService, ModalDialogInstanceService]\n})\nexport class ModalDialogModule {\n\n  public static forRoot(): ModuleWithProviders<ModalDialogModule> {\n    return {\n      ngModule: ModalDialogModule,\n      providers: [\n        {\n          provide: MODAL_DIALOG_FORROOT_GUARD,\n          useFactory: provideForRootGuard,\n          deps: [ModalDialogModule, new Optional(), new SkipSelf()]\n        },\n        ModalDialogInstanceService\n      ]\n    };\n  }\n}\n\n/**\n * @param dialogModule\n * @returns {string}\n */\nexport function provideForRootGuard(dialogModule: ModalDialogModule): string {\n  if (dialogModule) {\n    throw new Error(\n      `ModalDialogModule.forRoot() called twice.`);\n  }\n  return 'guarded';\n}\n","/*\n * Public API Surface of ngx-modal-dialog\n */\n\nexport * from './modal-dialog.module';\nexport * from './modal-dialog.service';\nexport * from './modal-dialog-instance.service';\nexport * from './modal-dialog.component';\nexport * from './modal-dialog.interface';\nexport * from './simple-modal.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ModalDialogInstanceService"],"mappings":"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"}