{"version":3,"file":"ziflow-ngx-simple-modal.mjs","sources":["../../src/simple-modal/simple-modal-options.ts","../../src/simple-modal/simple-modal-wrapper.component.ts","../../src/simple-modal/simple-modal-holder.component.ts","../../src/simple-modal/simple-modal.service.ts","../../src/simple-modal/simple-modal-service.factory.ts","../../src/simple-modal/simple-modal.module.ts","../../src/simple-modal/simple-modal.component.ts","../../src/ziflow-ngx-simple-modal.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const DefaultSimpleModalOptionConfig = new InjectionToken<SimpleModalOptions>('default-simple-modal.config');\n\nexport interface SimpleModalOptions {\n  closeOnEscape: boolean;\n  closeOnClickOutside: boolean;\n  bodyClass: string;\n  wrapperDefaultClasses: string;\n  wrapperClass: string;\n  animationDuration: number;\n  autoFocus: boolean;\n}\n\nexport type SimpleModalOptionsOverrides = Partial<SimpleModalOptions>;\n\nexport const defaultSimpleModalOptions: SimpleModalOptions = {\n  closeOnEscape: false,\n  closeOnClickOutside: false,\n  bodyClass: 'modal-open',\n  wrapperDefaultClasses: 'modal fade-anim',\n  wrapperClass: 'in',\n  animationDuration: 300,\n  autoFocus: false\n};\n","import {\n  Component,\n  ComponentFactoryResolver,\n  ElementRef, Injector,\n  OnDestroy,\n  Type,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport { SimpleModalComponent } from './simple-modal.component';\n\n/**\n * The modal backdrop wrapping wrapper to the modal\n */\n@Component({\n  selector: 'simple-modal-wrapper',\n  template: `\n    <div #wrapper [ngClass]=\"modalClasses\" [ngStyle]=\"{ display: 'block' }\" role=\"dialog\">\n      <ng-template #viewContainer></ng-template>\n    </div>\n  `,\n})\nexport class SimpleModalWrapperComponent implements OnDestroy {\n  /**\n   * Target viewContainer to insert modal content component\n   */\n  @ViewChild('viewContainer', { read: ViewContainerRef, static: true }) viewContainer;\n\n  /**\n   * Link wrapper DOM element\n   */\n  @ViewChild('wrapper', { read: ElementRef, static: true })\n  wrapper: ElementRef;\n\n  /**\n   * Wrapper modal and fade classes\n   */\n  modalClasses = 'modal fade-anim';\n\n  /**\n   * Dialog content componet\n   * @type {SimpleModalComponent}\n   */\n  content: SimpleModalComponent<any, any>;\n\n  /**\n   * Click outside callback\n   */\n  clickOutsideCallback: (event: MouseEvent) => void;\n\n  /**\n   * Constructor\n   * @param {ComponentFactoryResolver} resolver\n   */\n  constructor(private resolver: ComponentFactoryResolver) {}\n\n  /**\n   * Adds content modal component to wrapper\n   * @param {Type<SimpleModalComponent>} component\n   * @return {SimpleModalComponent}\n   */\n  addComponent<T, T1>(component: Type<SimpleModalComponent<T, T1>>) {\n    const factory = this.resolver.resolveComponentFactory(component);\n    const injector = Injector.create({ providers: [], parent: this.viewContainer.injector });\n    const componentRef = factory.create(injector);\n    this.viewContainer.insert(componentRef.hostView);\n    this.content = <SimpleModalComponent<T, T1>>componentRef.instance;\n    this.content.wrapper = this.wrapper;\n    return this.content;\n  }\n\n  /**\n   * Configures the function to call when you click on background of a modal but not the contents\n   * @param callback\n   */\n  onClickOutsideModalContent(callback: () => void) {\n    const containerEl = this.wrapper.nativeElement;\n\n    this.clickOutsideCallback = (event: MouseEvent) => {\n      if (event.target === containerEl) {\n        callback();\n      }\n    };\n\n    containerEl.addEventListener('mousedown', this.clickOutsideCallback, false);\n  }\n\n  ngOnDestroy() {\n    if (this.clickOutsideCallback) {\n      const containerEl = this.wrapper.nativeElement;\n      containerEl.removeEventListener('mousedown', this.clickOutsideCallback, false);\n      this.clickOutsideCallback = null;\n    }\n  }\n}\n","import {\n  Component,\n  ComponentFactoryResolver,\n  ElementRef,\n  Inject,\n  Type,\n  ViewContainerRef,\n  ViewChild,\n} from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport {\n  DefaultSimpleModalOptionConfig,\n  SimpleModalOptions,\n  SimpleModalOptionsOverrides,\n} from './simple-modal-options';\nimport { SimpleModalWrapperComponent } from './simple-modal-wrapper.component';\nimport { SimpleModalComponent } from './simple-modal.component';\n\n/**\n * View container manager which manages a list of modals currently active\n * inside the viewvontainer\n */\n@Component({\n  selector: 'simple-modal-holder',\n  template: '<ng-template #viewContainer></ng-template>',\n})\nexport class SimpleModalHolderComponent {\n  /**\n   * Target viewContainer to insert modals\n   */\n  @ViewChild('viewContainer', { read: ViewContainerRef, static: true }) viewContainer;\n\n  /**\n   * modal collection, maintained by addModal and removeModal\n   * @type {Array<SimpleModalComponent> }\n   */\n  modals: Array<SimpleModalComponent<any, any>> = [];\n\n  /**\n   * if auto focus is on and no element focused, store it here to be restored back after close\n   */\n  previousActiveElement = null;\n\n  /**\n   * Constructor\n   * @param {ComponentFactoryResolver} resolver\n   */\n  constructor(\n    private resolver: ComponentFactoryResolver,\n    @Inject(DefaultSimpleModalOptionConfig) private defaultSimpleModalOptions: SimpleModalOptions\n  ) {}\n\n  /**\n   * Configures then adds modal to the modals array, and populates with data passed in\n   * @param {Type<SimpleModalComponent>} component\n   * @param {object?} data\n   * @param {SimpleModalOptionsOverrides?} options\n   * @return {Observable<*>}\n   */\n  addModal<T, T1>(\n    component: Type<SimpleModalComponent<T, T1>>,\n    data?: T,\n    options?: SimpleModalOptionsOverrides\n  ): Observable<T1> {\n    // create component\n    if (!this.viewContainer) {\n      return of(null);\n    }\n    const factory = this.resolver.resolveComponentFactory(SimpleModalWrapperComponent);\n    const componentRef = this.viewContainer.createComponent(factory);\n    const modalWrapper: SimpleModalWrapperComponent = <SimpleModalWrapperComponent>(\n      componentRef.instance\n    );\n    const _component: SimpleModalComponent<T, T1> = modalWrapper.addComponent(component);\n\n    // assign options refs\n    _component.options = options = Object.assign({}, this.defaultSimpleModalOptions, options);\n\n    // set base classes for wrapper\n    modalWrapper.modalClasses = options.wrapperDefaultClasses;\n\n    // add to stack\n    this.modals.push(_component);\n\n    // wait a tick then setup the following while adding a modal\n    this.wait().then(() => {\n      this.toggleWrapperClass(modalWrapper.wrapper, options.wrapperClass);\n      this.toggleBodyClass(options.bodyClass);\n      this.wait(options.animationDuration).then(() => {\n        this.autoFocusFirstElement(_component.wrapper, options.autoFocus);\n        _component.markAsReady();\n      });\n    });\n\n    // when closing modal remove it\n    _component.onClosing(modal => this.removeModal(modal));\n\n    // if clicking on background closes modal\n    this.configureCloseOnClickOutside(modalWrapper);\n\n    // map and return observable\n    _component.mapDataObject(data);\n\n    return _component.setupObserver();\n  }\n\n  /**\n   * triggers components close function\n   * to take effect\n   * @param {SimpleModalComponent} component\n   * @returns {Promise<void>}\n   */\n  removeModal(closingModal: SimpleModalComponent<any, any>): Promise<any> {\n    const options = closingModal.options;\n    this.toggleWrapperClass(closingModal.wrapper, options.wrapperClass);\n    return this.wait(options.animationDuration).then(() => {\n      this.removeModalFromArray(closingModal);\n      this.toggleBodyClass(options.bodyClass);\n      this.restorePreviousFocus();\n    });\n  }\n\n  /**\n   * Instructs all open modals to\n   */\n  removeAllModals(): Promise<any> {\n    return Promise.all(this.modals.map(modal => this.removeModal(modal)));\n  }\n\n  /**\n   * Bind a body class 'modal-open' to a condition of modals in pool > 0\n   * @param bodyClass - string to add and remove from body in document\n   */\n  private toggleBodyClass(bodyClass: string) {\n    if (!bodyClass) {\n      return;\n    }\n    const body = document.getElementsByTagName('body')[0];\n    const bodyClassItems = bodyClass.split(' ');\n    if (!this.modals.length) {\n      body.classList.remove(...bodyClassItems);\n    } else {\n      body.classList.add(...bodyClassItems);\n    }\n  }\n\n  /**\n   * if the option to close on background click is set, then hook up a callback\n   * @param options\n   * @param modalWrapper\n   */\n  private configureCloseOnClickOutside(modalWrapper: SimpleModalWrapperComponent) {\n    modalWrapper.onClickOutsideModalContent(() => {\n      if (modalWrapper.content.options.closeOnClickOutside) {\n        modalWrapper.content.close();\n      }\n    });\n  }\n\n  /**\n   * Auto focus o the first element if autofocus is on\n   * @param options\n   * @param modalWrapperEl\n   */\n  private autoFocusFirstElement(componentWrapper: ElementRef, autoFocus: boolean) {\n    if (autoFocus) {\n      const focusable = componentWrapper.nativeElement.querySelectorAll(\n        'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n      );\n      if (focusable && focusable.length) {\n        this.previousActiveElement = document.activeElement;\n        focusable[0].focus();\n      }\n    }\n  }\n\n  /**\n   * Restores the last focus is there was one\n   */\n  private restorePreviousFocus() {\n    if (this.previousActiveElement) {\n      this.previousActiveElement.focus();\n      this.previousActiveElement = null;\n    }\n  }\n\n  /**\n   * Configure the adding and removal of a wrapper class - predominantly animation focused\n   * @param options\n   * @param modalWrapperEl\n   */\n  private toggleWrapperClass(modalWrapperEl: ElementRef, wrapperClass: string) {\n    const wrapperClassList = modalWrapperEl.nativeElement.classList;\n    const wrapperClassItems = wrapperClass.split(' ');\n    if (wrapperClassList.toString().indexOf(wrapperClass) !== -1) {\n      wrapperClassList.remove(...wrapperClassItems);\n    } else {\n      wrapperClassList.add(...wrapperClassItems);\n    }\n  }\n\n  /**\n   * Helper function for a more readable timeout\n   * @param ms\n   */\n  private wait(ms: number = 0) {\n    return new Promise<void>((resolve, reject) => {\n      setTimeout(() => resolve(), ms);\n    });\n  }\n\n  /**\n   * Instructs the holder to remove the modal and\n   * removes this component from the collection\n   * @param {SimpleModalComponent} component\n   */\n  private removeModalFromArray(component) {\n    const index = this.modals.indexOf(component);\n    if (index > -1) {\n      this.viewContainer.remove(index);\n      this.modals.splice(index, 1);\n    }\n  }\n}\n","import {\n  ApplicationRef,\n  ComponentFactoryResolver,\n  EmbeddedViewRef,\n  Injectable,\n  Injector,\n  Optional,\n  Type,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { SimpleModalHolderComponent } from './simple-modal-holder.component';\nimport { SimpleModalComponent } from './simple-modal.component';\nimport { SimpleModalOptionsOverrides } from './simple-modal-options';\n\nexport class SimpleModalServiceConfig {\n  container: HTMLElement | string = null;\n}\n\n@Injectable()\nexport class SimpleModalService {\n  /**\n   * Placeholder of modals\n   * @type {SimpleModalHolderComponent}\n   */\n  private modalHolderComponent: SimpleModalHolderComponent;\n\n  /**\n   * HTML container for modals\n   * type {HTMLElement | string}\n   */\n  private _container;\n\n  /**\n   * @param {ComponentFactoryResolver} resolver\n   * @param {ApplicationRef} applicationRef\n   * @param {Injector} injector\n   * @param {SimpleModalServiceConfig} config\n   */\n  constructor(\n    private resolver: ComponentFactoryResolver,\n    private applicationRef: ApplicationRef,\n    private injector: Injector,\n    @Optional() config: SimpleModalServiceConfig\n  ) {\n    if (config) {\n      this.container = config.container as any;\n    }\n  }\n\n  /**\n   * Adds modal\n   * @param {Type<SimpleModalComponent<T, T1>>} component\n   * @param {T?} data\n   * @param {SimpleModalOptionsOverrides?} options\n   * @return {Observable<T1>}\n   */\n  addModal<T, T1>(\n    component: Type<SimpleModalComponent<T, T1>>,\n    data?: T,\n    options?: SimpleModalOptionsOverrides\n  ): Observable<T1> {\n    if (!this.modalHolderComponent) {\n      this.modalHolderComponent = this.createSimpleModalHolder();\n    }\n    return this.modalHolderComponent.addModal<T, T1>(component, data, options);\n  }\n\n  /**\n   * Hides and removes modal from DOM, resolves promise when fully removed\n   * @param {SimpleModalComponent} component\n   * @return {Promise<{}>}\n\n   */\n  removeModal(component: SimpleModalComponent<any, any>): Promise<{}> {\n    if (!this.modalHolderComponent) {\n      return Promise.resolve({});\n    }\n    return this.modalHolderComponent.removeModal(component);\n  }\n\n  /**\n   * Closes all modals, resolves promise when they're fully removed\n   * @return {Promise<{}>}\n   */\n  removeAll(): Promise<{}> {\n    if (!this.modalHolderComponent) {\n      return Promise.resolve({});\n    }\n    return this.modalHolderComponent.removeAllModals();\n  }\n\n  /**\n   * Accessor for contain - will auto generate from string\n   * if needed or default to the root element if nothing was set\n   */\n\n  private set container(c) {\n    this._container = c;\n  }\n\n  private get container(): HTMLElement {\n    if (typeof this._container === 'string') {\n      this._container = document.getElementById(this._container);\n    }\n\n    if (!this._container && this.applicationRef['components'].length) {\n      const componentRootViewContainer = this.applicationRef['components'][0];\n      this.container = (componentRootViewContainer.hostView as EmbeddedViewRef<any>)\n        .rootNodes[0] as HTMLElement;\n    }\n\n    // fallback\n    if (!this._container || typeof this._container === 'string') {\n      this._container = document.getElementsByTagName('body')[0];\n    }\n\n    return this._container;\n  }\n\n  /**\n   * Creates and add to DOM modal holder component\n   * @return {SimpleModalHolderComponent}\n   */\n  private createSimpleModalHolder(): SimpleModalHolderComponent {\n    const componentFactory = this.resolver.resolveComponentFactory(SimpleModalHolderComponent);\n\n    const componentRef = componentFactory.create(this.injector);\n    const componentRootNode = (componentRef.hostView as EmbeddedViewRef<any>)\n      .rootNodes[0] as HTMLElement;\n\n    this.applicationRef.attachView(componentRef.hostView);\n\n    componentRef.onDestroy(() => {\n      this.applicationRef.detachView(componentRef.hostView);\n    });\n\n    this.container.appendChild(componentRootNode);\n\n    return componentRef.instance;\n  }\n}\n","import { ApplicationRef, ComponentFactoryResolver, Injector } from '@angular/core';\n\nimport { SimpleModalService, SimpleModalServiceConfig } from './simple-modal.service';\n\n/**\n * Modal service factory. Creates modal service with options\n * @param { ComponentFactoryResolver } resolver\n * @param { ApplicationRef } applicationRef\n * @param { Injector } injector\n * @param { SimpleModalServiceConfig } options\n * @return { SimpleModalService }\n */\nexport function SimpleModalServiceFactory(resolver: ComponentFactoryResolver,\n                                          applicationRef: ApplicationRef,\n                                          injector: Injector,\n                                          options: SimpleModalServiceConfig) {\n    return new SimpleModalService(resolver, applicationRef, injector, options);\n}\n","import { CommonModule } from '@angular/common';\nimport {\n  ApplicationRef,\n  ComponentFactoryResolver,\n  Injector,\n  ModuleWithProviders,\n  NgModule,\n} from '@angular/core';\n\nimport { SimpleModalHolderComponent } from './simple-modal-holder.component';\nimport { SimpleModalWrapperComponent } from './simple-modal-wrapper.component';\nimport { SimpleModalService, SimpleModalServiceConfig } from './simple-modal.service';\nimport { SimpleModalServiceFactory } from './simple-modal-service.factory';\nimport {\n  defaultSimpleModalOptions,\n  DefaultSimpleModalOptionConfig,\n  SimpleModalOptions,\n} from './simple-modal-options';\n\n@NgModule({\n  declarations: [SimpleModalHolderComponent, SimpleModalWrapperComponent],\n  providers: [\n    SimpleModalService,\n    {\n      provide: DefaultSimpleModalOptionConfig,\n      useValue: defaultSimpleModalOptions,\n    },\n  ],\n  imports: [CommonModule],\n})\nexport class SimpleModalModule {\n  static forRoot(\n    config: SimpleModalServiceConfig,\n    defaultModalOptions?: SimpleModalOptions\n  ): ModuleWithProviders<SimpleModalModule> {\n    return {\n      ngModule: SimpleModalModule,\n      providers: [\n        { provide: SimpleModalServiceConfig, useValue: config },\n        {\n          provide: SimpleModalService,\n          useFactory: SimpleModalServiceFactory,\n          deps: [ComponentFactoryResolver, ApplicationRef, Injector, SimpleModalServiceConfig],\n        },\n        {\n          provide: DefaultSimpleModalOptionConfig,\n          useValue: defaultModalOptions || defaultSimpleModalOptions,\n        },\n      ],\n    };\n  }\n\n  constructor() {}\n}\n","import { Component, ElementRef, HostListener, OnDestroy } from '@angular/core';\nimport { Observable, Observer, Subject, BehaviorSubject } from 'rxjs';\n\nimport { SimpleModalOptions } from './simple-modal-options';\n\nexport interface OnDestroyLike {\n  ngOnDestroy(): void;\n  [key: string]: any;\n}\n\n/**\n * Abstract modal\n * @template T - modal data;\n * @template T1 - modal result\n */\n@Component({\n  template: '',\n})\nexport abstract class SimpleModalComponent<T, T1> {\n  /**\n   * Observer to return result from modal\n   */\n  private observer: Observer<T1>;\n\n  /**\n   * Dialog result\n   * @type {T1}\n   */\n  result: T1;\n\n  /**\n   * Dialog wrapper (modal placeholder)\n   */\n  wrapper: ElementRef;\n\n  /**\n   * ref of options for this component\n   */\n  options: SimpleModalOptions;\n\n  /**\n   * ready$ is when all animations and focusing have comleted\n   */\n  _ready$ = new BehaviorSubject<boolean>(false);\n\n  /**\n   * Callback to the holders close function\n   */\n  private closerCallback: (component) => Promise<any> = () => Promise.resolve();\n\n  /**\n   * Constructor\n   */\n  constructor() {}\n\n  /**\n   * Maps your object passed in the creation to fields in your own Dialog classes\n   * @param {T} data\n   */\n  mapDataObject(data: T): void {\n    data = data || <T>{};\n    const keys = Object.keys(data);\n    for (let i = 0, length = keys.length; i < length; i++) {\n      const key = keys[i];\n      if (\n        data[key] &&\n        this[key] &&\n        typeof data[key] === 'object' &&\n        typeof this[key] === 'object'\n      ) {\n        Object.assign(this[key], data[key]);\n      } else {\n        this[key] = data[key];\n      }\n    }\n  }\n\n  /**\n   * Setup observer\n   * @return {Observable<T1>}\n   */\n  setupObserver(): Observable<T1> {\n    return Observable.create(observer => {\n      this.observer = observer;\n\n      // called if observable is unsubscribed to\n      return () => {\n        this.close();\n      };\n    });\n  }\n\n  /**\n   * Defines what happens when close is called - default this\n   * will just call the default remove modal process. If overriden\n   * must include\n   * @param callback\n   */\n  onClosing(callback: (component: SimpleModalComponent<any, any>) => Promise<any>): void {\n    this.closerCallback = callback;\n  }\n\n  /**\n   * Closes modal\n   */\n  close(): Promise<any> {\n    return this.closerCallback(this).then(v => {\n      if (this.observer) {\n        this.observer.next(this.result);\n        this.observer.complete();\n      }\n      return v;\n    });\n  }\n\n  /**\n   * keypress binding ngx way\n   * @param evt\n   */\n  @HostListener('document:keydown.escape', ['$event'])\n  onKeydownHandler(evt: KeyboardEvent) {\n    if (this.options && this.options.closeOnEscape) {\n      this.close();\n    }\n  }\n\n  get ready$() {\n    return this._ready$.asObservable();\n  }\n\n  markAsReady() {\n    this._ready$.next(true);\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}